Python不支持該語法,因爲它不支持該語法。匱乏Guido van Rossum,這是你要得到的最好答案。
可以很容易地添加到list
子類,雖然:
class List(list):
def __getitem__(self, index):
try:
return list.__getitem__(self, index)
except TypeError:
return List(self[i] for i in index)
def __setitem__(self, index, value):
try:
return list.__setitem__(self, index, value)
except TypeError:
value = iter(value)
for i in index:
self[i] = next(value)
a = List(range(10))
a.reverse()
print(a[1, 3, 5]) # [8, 6, 4]
a[1, 3, 5] = 1, 2, 3
print(a) # [9, 1, 7, 2, 5, 3, 3, 2, 1, 0]
的__setitem__
不守規矩時,你有更多的價值比你填充插槽(這也許應該給你一個錯誤),但在支持生成器的時候這很難做,所以,呃。
實施它的微不足道可能與它不屬於語言的一部分有關;特別是__getitem__
只是一個簡單的列表理解(或本例中的生成器表達式),您可以在自己的代碼中輕鬆編寫任何需要執行的代碼。
問問Guido。我不認爲「爲什麼沒有實現X功能」是一個很好的問題stackoverflow .. – Blorgbeard 2015-02-23 22:50:45
爲什麼你認爲你認爲一切都是一個好主意必須存在?這個功能在許多語言中都沒有找到,或許委員會不想增加混淆。今天添加此功能的困難可能是一個有趣的問題,儘管關於Python內部。 – 2015-02-23 22:51:25
不會讓我感到自然,從未在Matlab和Numpy之外見過這種符號。你在問什麼?是否有人在Python開發過程中實際考慮添加這個項沒有[關於擴展的提議](https://www.python.org/dev/peps/)。 – Kos 2015-02-23 22:52:19