在python中向顺序间隔列表中添加值?

Col*_*leS 0 python list range

我是Python的新手,我很困惑如何将以下代码从Matlab表示为Python:

P = [2:35,50,100,200]
Run Code Online (Sandbox Code Playgroud)

在Matlab中,这将吐出:P = [2,3,...,35,50,100,200]; 但是,我似乎无法弄清楚如何使用顺序编号轻松地将值添加到列表中,这在Matlab中很容易完成.任何建议都会很棒.谢谢!

mgi*_*son 6

Vanilla python没有专门的语法...如果您正在使用列表,则需要两个步骤:

lst = list(range(2, 36))  # for python2.x, you don't need `list(...)`
lst.extend([50, 100, 200])
Run Code Online (Sandbox Code Playgroud)

如果你有"前沿"(python3.5),可以使用解包:

lst = [*range(2, 36), 50, 100, 200]
Run Code Online (Sandbox Code Playgroud)

如果你正在使用numpy,你可以使用r_索引技巧(看起来有点类似于matlab版本):

>>> import numpy as np
>>> np.r_[2:36, 100, 200, 500]
array([  2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
    15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,
    28,  29,  30,  31,  32,  33,  34,  35, 100, 200, 500])
Run Code Online (Sandbox Code Playgroud)

  • `np.r_ [2:36,50,100,200]`? (2认同)
  • @ Trying2Learn:`range`只返回Python 2中的列表.在现代Python中,它返回一个特殊的`range`对象. (2认同)