使用其值

时间:2016-02-07 00:04:04

标签: python list insert

似乎python使用引用将变量插入到列表中。例如,以下代码:

t=[[0],[1]]
t.insert(1,t[0])
t[0].append(0)

返回:

t= [[0, 0], [0, 0], [1]]

,而所需的输出是:

t= [[0, 0], [0], [1]]

知道怎么处理这个吗?

3 个答案:

答案 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]]