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

时间:2016-08-23 22:51:18

标签: python list range

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

P = [2:35,50,100,200]

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

2 个答案:

答案 0 :(得分:6)

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

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

如果你有“前沿”(python3.5),you can use unpacking

lst = [*range(2, 36), 50, 100, 200]

如果你正在使用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])

答案 1 :(得分:4)

如果您有幸使用Python 3.5,则可以使用additional unpacking generalizations(来自PEP 448range

>>> [*range(2, 36), 50, 100, 200]
[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, 50, 100, 200]

请注意range生成的最后一个值比end参数少一个。