python 复制() 和删除()

python copy() and remove()

我想在同一行中编写 copy() 和 remove(i),但它似乎不起作用。但是,当我分成两行时,答案是正确的。

只是好奇为什么这两个程序有不同的输出

节目 1

x = [1,2,3,4,5]
d = [1,4,5]

for i in d:
    temp = x.copy().remove(i)
    print(temp)

输出:

None
None
None

节目 2

x = [1,2,3,4,5]
d = [1,4,5]

for i in d:
    temp = x.copy()
    temp.remove(i)
    print(temp)

输出:

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

这是因为 remove() 操作是就地操作,这意味着它会更新列表本身和 returns None,这就是您看到返回值的原因作为 None.

您可以改为使用海象运算符 := 来捕获 copy() 的结果。然后该对象将由 remove() 函数更新。

x = [1,2,3,4,5]
d = [1,4,5]

for i in d:
    (temp := x.copy()).remove(i)
    print(temp)

输出

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