似乎python使用引用将变量插入到列表中。例如,以下代码:
t=[[0],[1]]
t.insert(1,t[0])
t[0].append(0)
返回:
t= [[0, 0], [0, 0], [1]]
,而所需的输出是:
t= [[0, 0], [0], [1]]
知道怎么处理这个吗?
答案 0 :(得分:3)
再次欢迎回来。如果要复制值而不是引用它,则应使用copy.copy
。请记住,copy.copy
只会生成浅层副本,即复制对象的第一级。如果必须复制多个级别,请使用copy.deepcopy
。
import copy
t=[[0], [1]]
t.insert(1, copy.copy(t[0]))
t[0].append(0)
print t # [[0, 0], [0], [1]]
答案 1 :(得分:1)
您必须复制列表,您可以使用内置函数list
,尝试:
>>> t=[[0],[1]]
>>> t.insert(1,list(t[0]))
>>> t[0].append(0)
>>> t
[[0, 0], [0], [1]]
答案 2 :(得分:1)
您可以使用[:]
作为列表的浅表副本:
t = [[0], [1]]
t.insert(1, t[0][:])
t[0].append(0)
现在:
>>> t
[[0, 0], [0], [1]]