MATLAB對得到一個列表的一半了非常方便的語法:的Python指數像MATLAB結束/ 2
x(1:end/2)
我知道蟒蛇做這個語法是
x[:len(x)/2]
這是好的在這種情況下,因爲len(x)
很容易編寫。但是,當列表的名稱很長時(正如它們有時需要),這種語法變得更加痛苦,而當存在一個類似的長名稱列表時更是如此。
我知道這是在黑暗中的一個真實的鏡頭,但python有像MATLAB的任何語法選項?
MATLAB對得到一個列表的一半了非常方便的語法:的Python指數像MATLAB結束/ 2
x(1:end/2)
我知道蟒蛇做這個語法是
x[:len(x)/2]
這是好的在這種情況下,因爲len(x)
很容易編寫。但是,當列表的名稱很長時(正如它們有時需要),這種語法變得更加痛苦,而當存在一個類似的長名稱列表時更是如此。
我知道這是在黑暗中的一個真實的鏡頭,但python有像MATLAB的任何語法選項?
沒有專門的語法。如果你需要做大量的,寫一個函數:
def half_list(l):
return l[:len(l)/2]
不,在Python列表沒有概念end
(有點類似的概念是指數-1
)。
一個簡單(但不推薦)解決問題的方法是:
l = longnamelist
l[:len(l)/2]
或者複製/粘貼長的名字......(有些編輯有一個快捷方式複製一個字,這使得複製/粘貼一個很長的名字很容易。)
我會指出你賦予MATLAB的語法是完全錯誤的。 x [:end/2]將因以下原因失敗。 x(1:結束/ 2)將成功。請注意重要的區別。 – 2012-06-10 02:35:02
@Mike:我改正了木片上的代碼。另外,你應該知道MATLAB(最低版本)至少會在矢量長度爲奇數時發出警告。例如:'x = 1:5; x(1:end/2)'將打印'警告:用作索引時,冒號運算符需要整數操作數。你可以很容易地使用它來靜音:'x(1:fix(end/2))' – Amro
...並且在Python 3中顯然也會失敗 – Amro