3

所以我正在做一个项目,这段代码很有趣。我想要一个可以获取列表 (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
4

3 回答 3

5

为了复制list1inlist2你应该这样做:

list2 = list1[:]

但是要小心,使用list2.remove(list2[y])changes list2,所以进一步的索引也会被移动。我会建议你的循环这个替代方案:

list2 = [x for x in list1 if x[2] != 0]
于 2013-09-17T07:59:46.473 回答
2

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

list2 = list1[:]
于 2013-09-17T08:00:17.690 回答
1

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

list2 = list1[:] 
于 2013-09-17T08:00:00.910 回答