2016-08-23 68 views
0

我是相当新的Python和感到困惑如何从MATLAB代表下面的代码的Python:将值添加到python中按顺序排列的列表?

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

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

+0

您是否尝试过添加一个值,然后对列表进行排序,使其保留其顺序编号? - 我不熟悉matlab – NuclearPeon

+0

@FujiApple除了你不能 - 因为整数不能迭代,所以它会失败... –

+0

@JonClements确实,我多么愚蠢 – FujiApple

回答

5

香草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]) 
+2

那么...在3.5,你可以做'[*范围(2,36),50,100,200]'... –

+0

@JonClements - 谢谢。我想它_does_有一个语法(排序):-) – mgilson

+0

谢谢!这适用于Python3.5 – ColeS

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争论少了一个。

相关问题