Skip to main content
 首页 » 编程设计

遍历和更新列表的Python列表

2025年05月04日21Renyi-Fan

我正在尝试更改 z 列表的列表元素的最后一个索引处的元素,但出现错误

l=['n1','n2','n3','n4'] 
path=['x','n1','y','z','n2'] 
y = ['n'] 
path+= y 
d=0 
seen = set() 
for i in l: 
   if i in path: 
     f=0 
   else: 
      d+=1 
      seen.add(i) 
 
 
n=0 
z = [[]]*d 
for i in seen: 
   z[n] = path 
   z[n][-1] = i 
   n+=1 
print(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']]  

我无法弄清楚为什么它没有给出正确的结果。

请您参考如下方法:

您在每次迭代中将 path 的引用分配给 z[n] 并更改列表的最后一个元素,因此不仅 z [n] 发生了变化,但 path 也发生了变化。您应该将 path 的副本分配给 z[n]。

改变:

z[n] = path 

到:

z[n] = path[:]