[英]List comprehension in Python?
我有這個清單:
a = [1,2,3,4,5]
我想從列表中刪除每個元素。 我就是這樣
for i in range(0,len(a)):
del a[0]
我可以在其中使用列表理解嗎? 例如del a[0] for i in range(0,len(a))
列表推導用於創建列表,而不是銷毀它們。 他們不是這項工作的正確工具。
如果要清除列表的內容,最快的方法是
del a[:]
這是切片刪除。 省略的起點和終點默認為列表的起點和終點。
請注意,通常最好將列表替換為新列表:
a = []
即使a
尚不存在,此方法也有效,並且對新列表的修改不會干擾需要舊列表的代碼的任何其他部分。 這些屬性通常(但並非總是)是理想的。
通常您根本不會使用循環來執行此操作。 要清除現有列表,請使用a[:] = []
。
不,您不能在列表推導中del
組件。 您為什么首先要這樣做? 列表理解是用於創建列表,而不是用於修改。
您可以將列表替換為使用列表理解創建的另一列表。
原因是列表理解需要一個表達式。 但是del
是一個聲明。
列表理解(來自功能編程,其中什么都沒有改變)是用於構建列表的。 由於您似乎想清除現有列表的元素(而不是僅使用某些元素等來創建新列表),因此列表理解不是正確的工具。
就是說,列表理解可以被濫用來做到這一點:
[a.pop() for i in range(len(a))]
注意:這是一個壞主意(因為它使用列表理解來實現與預期目的完全不同的東西),我強烈建議您不要使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.