2016-08-23 153 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爭論少了一個。