如何保持原始列表中的值不会更改

时间:2015-06-24 19:34:49

标签: python list

我对python有点新,所以这个问题可能很容易回答。但是,逻辑对我来说没有意义,这就是我发布这个问题的原因。虽然提出了类似的问题,但他们都使用了大量难以阅读的代码。这是python中的程序:

list1 = [1,2,3,4,5]

list2 = list1

for i in range(len(list2)):
    list2[i] += 1

print list1

当我运行这个程序时,它返回list1为[2,3,4,5,6],这与list2相同。我的问题是为什么list1连接到list2,以及如何使它们彼此独立。谢谢你的回答。

2 个答案:

答案 0 :(得分:1)

执行list2 = list1后,您只是将list1的引用传递给list2,而是需要复制list1并将该副本传递给{{} 1}}。 示例 -

list2

或者您也可以使用list1 = [1,2,3,4,5] list2 = list1[:] for i in range(len(list2)): list2[i] += 1 print list1 >> [1, 2, 3, 4, 5] 模块 -

copy

如果列表包含对象,您可能也想复制它们,那么使用copy.deepcopy()

答案 1 :(得分:0)

默认情况下,python中的赋值运算符链接两个对象,即在两个对象之间创建绑定。 为了让您创建一个新的独立对象并仍然复制原始对象。 你必须使用副本(浅或深,取决于你的要求)

list2 = copy.copy(list1)