簡體   English   中英

用Python理解列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM