我是相當新的Python和感到困惑如何從MATLAB代表下面的代碼的Python:將值添加到python中按順序排列的列表?
P = [2:35,50,100,200]
在Matlab中,這會吐出:P = 2,3,...,35, 50,100,200];然而,我似乎無法弄清楚如何在Matlab中輕鬆地使用順序編號方式將值添加到列表中。任何建議都會很棒。謝謝!
我是相當新的Python和感到困惑如何從MATLAB代表下面的代碼的Python:將值添加到python中按順序排列的列表?
P = [2:35,50,100,200]
在Matlab中,這會吐出:P = 2,3,...,35, 50,100,200];然而,我似乎無法弄清楚如何在Matlab中輕鬆地使用順序編號方式將值添加到列表中。任何建議都會很棒。謝謝!
香草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])
如果你有幸使用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
爭論少了一個。
您是否嘗試過添加一個值,然後對列表進行排序,使其保留其順序編號? - 我不熟悉matlab – NuclearPeon
@FujiApple除了你不能 - 因爲整數不能迭代,所以它會失敗... –
@JonClements確實,我多麼愚蠢 – FujiApple