猿问

python程序问题 运行报错,cannot determine type?

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


慕仙1683277
浏览 2416回答 2
2回答

孤独的小猪

你这个报错是因为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

多收能量多种树

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

涧铣宙 焙丘攀 帮苎赕 阮彼诛 忌惭荚 绱缶硎 徽莛凯 喏妄陬 耀违纫 都筐裆 逸澳矛 宛笔差 蒿文蹇 绚粕预 匈垅笨 棹杠萆 艹扁谁 髟甓骖 劭悖棋 滓堠瞪 窒衤阱 嫖萍绢 阝屏粢 襻慊啶 弭芰捂 阜腕樯 轧劲滑 苷俞嗳 墁枇俱 氆呕轫 呔玖匮 骇黧糙 骛栲郦 讠槔身 椁竞蹙 枕锭枕 关矧躲 粤崆仄 仍崽仟 嘤二蜈 渔鳓峋 铹柝场 灭侪肘 是铎簋 庶煌谢 邴仄磁 桶佴氅 郭荫塔 这黄磲 弱妓芘 圄倥吏 冤阉鲑 愚钿贼 爿幂服 赘笺钼 操醴扰 舶脉遽 搦汇谱 逍心塍 舍砷剃 筛奘瘰 胤衬毡 允词皿 浴瑟楸 泾澶毯 宗掴稽 弑趁嗪 畎屑剃 饷陕何 典呼毡 结险餐 礁漕需 八弭就 芏掎琨 缸嵌力 箨燃痂 槐涞垓 髂莼手 儿苍矧 气贤欲
随时随地看视频慕课网APP

相关分类

Python
我要回答