所以我正在做一个项目,这段代码很有趣。我想要一个函数,它接受一个列表 (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

最佳答案

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

list2 = list1[:]

但请注意,使用 list2.remove(list2[y]) 会更改 list2 ,因此还会移动更多索引。我建议你的循环的这个替代方案:
list2 = [x for x in list1 if x[2] != 0]

关于python - 变量改变自身?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18844336/

10-14 17:42