2015-06-24 14 views
-1

我有点新的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],这是相同的列表2。我的问题是为什么list1连接到list2,以及如何保持它们彼此独立。谢谢你的回答。

+4

的重复http://stackoverflow.com/q/2612802/3001761 – jonrsharpe

回答

1

当你做list2 = list1,你只是路过的list1引用list2,而不是你需要做的list1和传球被复制到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模块 -

>>> import copy 
>>> list1 = [1,2,3,4,5] 
>>> list2 = copy.copy(list1) 
>>> for i in range(len(list2)): 
...  list2[i] += 1 
... 
>>> list1 
[1, 2, 3, 4, 5] 

如果列表中包含的对象,你可能想复制它们为好,在这种情况下使用copy.deepcopy()

0

通过python中的默认赋值运算符链接两个对象,即在两个对象之间创建绑定。 为了让您创建一个新的独立对象,并仍然复制原件。 你将不得不使用复制(浅或深,这取决于你的要求)

list2 = copy.copy(list1) 
相关问题