我正在做一个问题,比如word ladder。
最初我有一个字符串列表:paths = [[A]]
。
现在B,C和D都是只有一个不同字母的字符串
到A.我希望做的是
[[A]] with [B,C,D] -> paths = [[A,B], [A,C], [A,D]]
但如果我复制[[A]]
三个驯服以准备paths = [[A], [A], [A]]
使用paths = [paths[0]]*3
,然后执行:
i=0
for word in [B,C,D]:
newpath = paths[i]
paths.append(newpath.append(word))
i += 1
显示[[A, B, C, D], [A, B, C, D], [A, B, C, D]]
。每个副本上的操作似乎相同。即使我使用paths = [paths[0] for i in range(3)]
,它仍然是相同的。我怎么能避免呢?我的代码出了什么问题?
非常感谢!
答案 0 :(得分:1)
在paths = [paths[0] for i in range(3)]
中,paths[0]
仍然是对同一个列表的引用。您可能需要paths = [paths[0].copy() for i in range(3)]
。
您可以将以下代码添加到pythontutor visualization以检查其工作原理:
paths = [['A']]
paths = [paths[0] for i in range(3)]
otherpaths = [['A']]
otherpaths = [otherpaths[0].copy() for i in range(3)]