根据定义,List.append(elem)
会在列表的末尾添加一个元素。
但是,以下代码的结果并不符合规则:
lista = []
listb = []
for i in "abc":
lista.append(i)
listb.append(lista)
print(listb)
结果是:
[['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']]
根据规则,结果应该是
[['a'], ['a', 'b'], ['a', 'b', 'c']]
为什么会这样呢?如何得到第二个结果呢?
发布于 2018-07-13 03:04:41
因为你没有附加'a','a','b‘和'a','b','c’,而是三次引用lista。而lista发生了变化,因此它显示了list (a)三次原样。
发布于 2018-07-13 03:08:54
您仅向lista
追加了对listb
的引用。要获得想要的结果,您需要将listb
的副本添加到lista
(在本例中是足够简单的list()
):
lista = []
listb = []
for i in "abc":
lista.append(i)
listb.append(list(lista))
print(listb)
结果:
[['a'], ['a', 'b'], ['a', 'b', 'c']]
发布于 2018-07-13 03:09:38
Copy()可以做到这一点:
lista = []
listb = []
for i in "abc":
lista.append(i)
listb.append(lista.copy())
print(listb)
你把a的引用加到b上,然后操纵a...
https://stackoverflow.com/questions/51312766
复制相似问题