for 迴圈列表下對列表操作的坑

2021-09-29 19:22:30 字數 829 閱讀 4533

工作遇到用作記錄,下面用簡單的**舉例

# 從列表1中去掉列表2中的元素(當然有別的簡單的方式,這裡是舉例)

list1 = [1, 2, 3, 4, 5, 6]

list2 = [4, 5]

for i in list1:

if i in list2:

list1.remove(i)

print(list1)

預想的是列印出的結果應該是

[1, 2, 3, 6]
但實則是

[1, 2, 3, 5, 6]
詳解參考這個:

再舉乙個例子

# 把所有的列表元素再加進列表一遍

list1 = [1, 2, 3, 4, 5, 6]

for i in list1:

print(list1)

執行下試試,程式永遠都結束不了!

因為for迴圈可變物件,再給此可變物件增加元素,那麼這個列表時時刻刻都在增加,所以迴圈不完。

所以不能for它本身,要建立新的物件,比如:

list1 = [1, 2, 3, 4, 5, 6]

for i in list1[:]:

print(list1)

import copy

list1 = [1, 2, 3, 4, 5, 6]

for i in copy.copy(list1):

print(list1)

# 建立新的物件去for 問題就解決了

python實現迴圈列表

class loop queue2 object 實現迴圈列表 def init self,maxsize 初始化,命令頭部元素的序號,尾部元素的序號,定義序列列表 param maxsize 傳入列表的最大長度 self.queue none maxsize self.maxsize maxsiz...

核心list雙向迴圈列表

雙向迴圈鍊錶節點.結構體定義如下 1 list head定義並初始化 define list head init name define list head name struct list head name list head init name 所以list head name 等價於 str...

2014 10 10 約瑟夫環 迴圈列表

約瑟夫問題.cpp 定義控制台應用程式的入口點。約瑟夫問題 已知n個人 n 1 圍坐一圓桌周圍,從1開始順序編號。從序號為k k由使用者指定 的人開始報數,順時針數到m m由使用者指定 的那個人出列。他的下乙個人又從1開始報數,數到 m的那個人又出列。依此規則重複下去,直到所有人全部出列。請問最後乙...