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]
我想在同一行中编写 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]