我对Python很新,我很困惑如何将以下代码从Matlab表示为Python:
P = [2:35,50,100,200]
在Matlab中,这将吐出:P = [2,3,...,35,50,100,200];但是,我似乎无法弄清楚如何使用顺序编号轻松地将值添加到列表中,这在Matlab中很容易完成。任何建议都会很棒。谢谢!
答案 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 448)range
:
>>> [*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
参数少一个。