我正在尝试更改 z list 的列表元素的最后一个索引处的元素,但出现错误l=['n1','n2','n3','n4']path=['x','n1','y','z','n2']y = ['n']path+= yd=0seen = set()for i in l: if i in path: f=0 else: d+=1 seen.add(i)n=0z = [[]]*dfor i in seen: z[n] = path z[n][-1] = i n+=1print(z)z 应该[['x', 'n1', 'y', 'z', 'n2', 'n3'], ['x', 'n1', 'y', 'z', 'n2', 'n4']] 但n3它只给出了列表元素的最后一个索引,即 [['x', 'n1', 'y', 'z', 'n2', 'n3'], ['x', 'n1', 'y', 'z', 'n2', 'n3']] 我无法弄清楚为什么它没有给出正确的结果。
2 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
您在每次迭代中分配一个path
to的引用z[n]
并对列表的最后一个元素进行z[n]
更改,因此不仅更改而且还path
获得更改。您应该分配一个path
to的副本z[n]
。
改变:
z[n] = path
至:
z[n] = path[:]
添加回答
举报
0/150
提交
取消