2012-06-09 47 views
2

MATLAB對得到一個列表的一半了非常方便的語法:的Python指數像MATLAB結束/ 2

x(1:end/2) 

我知道蟒蛇做這個語法是

x[:len(x)/2] 

這是好的在這種情況下,因爲len(x)很容易編寫。但是,當列表的名稱很長時(正如它們有時需要),這種語法變得更加痛苦,而當存在一個類似的長名稱列表時更是如此。

我知道這是在黑暗中的一個真實的鏡頭,但python有像MATLAB的任何語法選項?

+1

我會指出你賦予MATLAB的語法是完全錯誤的。 x [:end/2]將因以下原因失敗。 x(1:結束/ 2)將成功。請注意重要的區別。 – 2012-06-10 02:35:02

+2

@Mike:我改正了木片上的代碼。另外,你應該知道MATLAB(最低版本)至少會在矢量長度爲奇數時發出警告。例如:'x = 1:5; x(1:end/2)'將打印'警告:用作索引時,冒號運算符需要整數操作數。你可以很容易地使用它來靜音:'x(1:fix(end/2))' – Amro

+1

...並且在Python 3中顯然也會失敗 – Amro

回答

6

沒有專門的語法。如果你需要做大量的,寫一個函數:

def half_list(l): 
    return l[:len(l)/2] 
0

不,在Python列表沒有概念end(有點類似的概念是指數-1)。
一個簡單(但不推薦)解決問題的方法是:

l = longnamelist 
l[:len(l)/2] 

或者複製/粘貼長的名字......(有些編輯有一個快捷方式複製一個字,這使得複製/粘貼一個很長的名字很容易。)