变量本身变化?

时间:2013-09-17 07:58:23

标签: python

所以我正在研究一个项目,这段代码很有趣。我想要一个能够获取列表(list1)的函数,制作该列表的副本(list2)并仅从副本中修剪某些对象。我只编写了代码来从副本中减去项目,原来也一直在变化。(?)我只是不明白如何从中减去原始列表(list1)。代码在下面,提前感谢您的帮助..

def copyandtrim(w, x, y, z):
    list1 = [w, x, y ,z]
    list2 = []
    list2 = (list1)

    testlen = (len(list2))

    for y in range(testlen - 1):
        if (list2[y])[2] == 0:
            list2.remove(list2[y])
        else:
            pass

3 个答案:

答案 0 :(得分:5)

要在list1中制作list2的副本,您应该这样做:

list2 = list1[:]

但请注意,使用list2.remove(list2[y])更改list2,以便进一步转换其他索引。我会建议你的循环替代方案:

list2 = [x for x in list1 if x[2] != 0]

答案 1 :(得分:2)

list2 = list1实际上并不执行list对象的深层复制。它只是指向list2以引用相同的列表对象。要获得副本,最简单的方法是使用:

list2 = list1[:]

答案 2 :(得分:1)

要在python中复制列表,您应该使用切片操作:

list2 = list1[:]