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條經(jīng)驗 獲得超302個贊
你這個報錯是因為data2看似是復(fù)制了data1的數(shù)據(jù),但其實data1和data2指向的是同一個內(nèi)存地址,當(dāng)data2發(fā)生改變的時候,data1其實也發(fā)生了變化。你可以你用 data2=data[:],這樣data1和data2指向不同的內(nèi)存地址。當(dāng)一個發(fā)生改變,另一個不會發(fā)生改變。所以正確代碼如下:
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條經(jīng)驗 獲得超6個贊
data2 = data1,則data2和data1是同一個數(shù)組[1,2,3,4]
一開始,len(data1)=4
但是當(dāng)循環(huán)到 m=0, n=0 時,即第一次 data2.remove() 后,data2變成了[2,3,4],因為data2和data1是同一個數(shù)組,所以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]
然后當(dāng)m=1, n=1時,還要刪掉3,data2和data1就是[2, 4]
當(dāng)外層循環(huán)到 m=2 的時候,data1[2]是沒有的。。。

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