[英]Removing elements from a List in Python
我正在使用python 3.4並只是學習基礎知識,所以請忍受我。
listA = [1,2]
for a in listA:
listA.remove(a)
print(listA)
假設我得到一個空列表,但我得到的是一個值為'2'的列表。 我用大號調試代碼。 列表中的值以及列表具有單個元素時for循環退出。 為什么最后一個元素沒有從列表中刪除..?
發生這種情況是因為for的長度僅在開始時進行評估,並在循環時修改列表:
>>> l = [1,2,3]
>>> l
[1, 2, 3]
>>> for a in l:
print(a)
print(l)
l.remove(a)
print(a)
print(l)
print("---")
1
[1, 2, 3]
1
[2, 3]
---
3
[2, 3]
3
[2]
---
>>>
看到? 用於索引列表並在其上循環的隱式變量的值會增加並跳過第二個元素。
如果要清空列表,請執行以下操作:
>>> l.clear()
>>> l
[]
或者,如果需要在遍歷列表時對其進行修改,請使用另一種遍歷列表的方法。
正如@Justin在評論中提到的那樣,在迭代列表時不要更改列表。 當您繼續從列表中刪除元素時,列表的大小會縮小,這將更改元素的索引。
如果需要逐個從列表中刪除元素,則迭代列表副本,保留原始列表,同時修改流程中的重復列表。
>>> listA = [1,2,3,4]
>>> listB = [1,2,3,4]
>>> for each in listA:
... print each
... listB.remove(each)
1
2
3
4
>>> listB
[]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.