创建列表的副本,使列表中的每个元素与原始元素不同?

时间:2014-04-17 08:12:19

标签: python

是否可以创建列表的副本,使得copt的每个元素与原始元素的每个元素都无关?

e.g

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

然后 (t的副本)[0]是t [0] 返回False

对于我尝试过的所有复制功能,似乎都返回True。

谢谢!

2 个答案:

答案 0 :(得分:1)

在Python中,缓存小整数。因此,当您使用它们时,将不会创建差异整数对象。将使用缓存的对象。这就是为什么在将两个小整数与True运算符进行比较时得到is的原因。

如果您只想复制一个数字列表,那么

new_list = old_list[:]

应该足够了。

另请注意,整数对象在Python中是不可变的。所以,你不必担心。

答案 1 :(得分:0)

为此,您可以使用deepcopy获取不同的数据集:

from copy import deepcopy    
b = deepcopy(a)

但请注意,如果您的列表包含ints,那么您将始终获得True,因为这两个整数将是相同的。这就是我的意思:http://repl.it/R3J/1

但是,如果您正在处理类似:a = [[1], [2], [3], [4], [5]]的内容,那么我声明的方法有效:http://repl.it/R3J/2