如何复制列表并以不同的方式操作



>我正在做一个问题,比如单词梯。 最初我有一个字符串列表: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)],它仍然是一样的。我怎样才能避免它?我的代码有什么问题?

非常感谢

paths = [paths[0] for i in range(3)]中,paths[0]仍然是对同一个列表的引用。你可能想要paths = [paths[0].copy() for i in range(3)].

你可以把下面的代码放到pythontutor可视化中,以检查它是如何工作的:

paths = [['A']]
paths = [paths[0] for i in range(3)]
otherpaths = [['A']]
otherpaths = [otherpaths[0].copy() for i in range(3)]

相关内容

  • 没有找到相关文章

最新更新