data1=[1,2,3,4]
data2?=?data1
data3=[[1,2],[3,4]]
for?m?in?range(0,len(data1)):
????for?n?in?range(0,len(data3)):
????????if?data3[n][0]?==?data1[m]:
????????????data2.remove(data1[m])???
????????else:
????????????continue
2 回答

孤獨的小豬
TA貢獻232條經驗 獲得超302個贊
你這個報錯是因為data2看似是復制了data1的數據,但其實data1和data2指向的是同一個內存地址,當data2發生改變的時候,data1其實也發生了變化。你可以你用 data2=data[:],這樣data1和data2指向不同的內存地址。當一個發生改變,另一個不會發生改變。所以正確代碼如下:
data1=[1,2,3,4] data2?=?data1[:] data3=[[1,2],[3,4]] for?m?in?range(0,len(data1)): ????for?n?in?range(0,len(data3)): ????????if?data3[n][0]?==?data1[m]: ????????????data2.remove(data1[m])??? ????????else: ????????????continue

多收能量多種樹
TA貢獻4條經驗 獲得超6個贊
data2 = data1,則data2和data1是同一個數組[1,2,3,4]
一開始,len(data1)=4
但是當循環到 m=0, n=0 時,即第一次 data2.remove() 后,data2變成了[2,3,4],因為data2和data1是同一個數組,所以data1此時也是[2,3,4]
In?[1]:?data1=[1,2,3,4] In?[2]:?data2=data1 In?[3]:?data2.remove(1) In?[4]:?data2 Out[4]:?[2,?3,?4] In?[5]:?data1 Out[5]:?[2,?3,?4]
然后當m=1, n=1時,還要刪掉3,data2和data1就是[2, 4]
當外層循環到 m=2 的時候,data1[2]是沒有的。。。

慕的地6079101
TA貢獻3593條經驗 獲得超0個贊
澗銑宙
焙丘攀
幫苧賧
阮彼誅
忌慚莢
绱缶硎
徽莛凱
喏妄陬
耀違紉
都筐襠
逸澳矛
宛筆差
蒿文蹇
絢粕預
匈垅笨
棹杠萆
艸扁誰
髟甓驂
劭悖棋
滓堠瞪
窒衤阱
嫖萍絹
阝屏粢
襻慊啶
弭芰捂
阜腕檣
軋勁滑
苷俞噯
墁枇俱
氆嘔軔
呔玖匱
駭黧糙
騖栲酈
讠槔身
槨競蹙
枕錠枕
關矧躲
粵崆仄
仍崽仟
嚶二蜈
漁鰳峋
鐒柝場
滅儕肘
是鐸簋
庶煌謝
邴仄磁
桶佴氅
郭蔭塔
這黃磲
弱妓芘
圄倥吏
冤閹鮭
愚鈿賊
爿冪服
贅箋鉬
操醴擾
舶脈遽
搦匯譜
逍心塍
舍砷剃
篩奘瘰
胤襯氈
允詞皿
浴瑟楸
涇澶毯
宗摑稽
弒趁嗪
畎屑剃
餉陜何
典呼氈
結險餐
礁漕需
八弭就
芏掎琨
缸嵌力
籜燃痂
槐淶垓
髂莼手
兒蒼矧
氣賢欲
添加回答
舉報
0/150
提交
取消