1. 程式人生 > 其它 >Python程式設計中可能要遇到的坑

Python程式設計中可能要遇到的坑

技術標籤:Python學習python列表資料結構運維

一、迴圈新增

lst = [1,2,3,4,5,6]
for i in lst:
    lst.append(7) 	/這樣寫法就會一直持續新增7,因為每新增一個,列表都會多一個元素,就會一直迴圈下去一直加7

print(lst)

二、列表迴圈刪除錯誤例項

li = [11, 22, 33, 44]
for e in li:	/直接從列表中迴圈
    li.remove(e)
print(li)

結果:
在這裡插入圖片描述
for的運⾏過程. 會有⼀個指標來記錄當前迴圈的元素是哪⼀個, ⼀開始這個指標指向第0 個.
然後獲取到第0個元素. 緊接著刪除第0個. 這個時候. 原來是第⼀個的元素會⾃動的變成 第0個.

然後指標向後移動⼀次, 指向1元素. 這時原來的1已經變成了0, 也就不會被刪除了.

用 del 或remove 會報錯,用 pop 會剩下 11和22,也不行

那怎樣才可以哪?

方法一:
li = [11, 22, 33, 44]
for i in range(len(li)):
    li.pop()
print(li)

方法二:
li = [1,2,3,4]
lst = li[:]
for i in lst:
    li.remove(i)
print(li)

注意: 由於刪除元素會導致元素的索引改變, 所以容易出現問題. 儘量不要再迴圈中直接去刪除元素. 可以把要刪除的元素新增到另⼀個容器中然後再批量刪除.