为了账号安全,请及时绑定邮箱和手机立即绑定

遍历和更新列表的 Python 列表

遍历和更新列表的 Python 列表

一只甜甜圈 2021-06-16 18:11:00
我正在尝试更改 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个赞

您在每次迭代中分配一个pathto的引用z[n]并对列表的最后一个元素进行z[n]更改,因此不仅更改而且还path获得更改。您应该分配一个pathto的副本z[n]

改变:

z[n] = path

至:

z[n] = path[:]


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信