Python 遍歷列表刪除操作時不能正確刪除

2021-09-26 14:29:49 字數 1724 閱讀 3082

發現元素間隔進行了刪除,這是什麼情況導致的呢?

總結當我們遍歷列表中的元素進行刪除操作的時候,發現並不能滿足我們的需求

>>

> ls =[1

,2,3

,4,5

]>>

>

for i in ls:

if i >1:

ls.remove(i)

>>

> ls[1

,3,5

]

列表的長度變短,對最初的遍歷長度做了修改,導致超出索引

>>

> ls =[1

,2,3

,4,5

]>>

>

for i in

range

(len

(ls)):

if ls[i]

>1:

ls.pop(i)24

traceback (most recent call last)

: file ""

, line 2,in

if ls[i]

>1:

indexerror:

list index out of range

可以建立乙個新的列表取出滿足條件的元素

>>

> ls =[1

,2,3

,4,5

]>>

> ls_num =

>>

>

for num in ls:

if num >1:

>>

> ls_num[2

,3,4

,5]

還可以利用ls[:]的方法對列表進行複製,對原列表的操作不會影響新的列表

>>

> ls =[1

,2,3

,4,5

]>>

>

for i in ls[:]

:if i >1:

ls.remove(i)

>>

> ls[1

]

可以採用倒序遍歷列表range(len(ls) -1, -1 , -1)
>>

> ls =[1

,2,3

,4,5

]>>

>

for i in

range

(len

(ls)-1

,-1,

-1):

if ls[i]

>1:

ls.pop(i)54

32

>>

> ls =[1

,2,3

,4,5

]>>

>

for i in

range

(len

(ls)):

if ls[i]

>2:

ls.pop(i)35

traceback (most recent call last)

: file ""

, line 2,in

if ls[i]

>2:

indexerror:

list index out of range

遍歷Python列表時安全刪除

今天在做工作時,需要遍歷乙個列表把其中不符合要求的刪除掉 於是想到,在遍歷列表的同時刪除元素會不會引起不安全 然後上網搜了一些材料 在這裡總結一下 例如 a 1,2,3,4,5 for i in a if i 4 a.remove i print a上述程式中,我們本來想刪除列表中不等於4的數字 但...

Python遍歷列表時刪除元素

本文首發於我的個人部落格suixin s blogpython的for迴圈可以遍歷乙個列表,但若需要同時將符合條件的元素刪除時,則會出錯。s 1 2,3 4,1 1 s1 s for i in s1 if i 1 s1.remove i print s1 輸出 2,3,4,1 另一種 s2 s fo...

Python語法糖 遍歷列表時刪除元素

python的for可以遍歷乙個list,但是在遍歷的過程中刪除元素常常會得到意想不到的結果甚至程式出現異常,例如 lst 1,1,0,2,0,0,8,3,0,2,5,0,2,6 for item in lst if item 0 lst.remove item print lst 輸出 1,1,2...