gpt4 book ai didi

python - 从python中的两个列表中删除公共(public)值

转载 作者:太空狗 更新时间:2023-10-29 22:02:09 28 4
gpt4 key购买 nike

您好,假设我在 Python 中有两个列表,我想从两个列表中删除公共(public)值。一个潜在的解决方案是:

x = [1, 2, 3, 4, 5, 6, 7, 8]
y = [43, 3123, 543, 76, 879, 32, 14241, 342, 2, 3, 4]
for i in x:
if i in y:
x.remove(i)
y.remove(i)

这似乎是正确的,但事实并非如此。我猜,原因是因为通过从列表中删除一个项目,索引会继续迭代。因此,对于列表中值彼此接近的两个公共(public)值,我们将丢失后面的值(代码不会遍历它)。结果将是:

>>> x
[1, 3, 5, 6, 8, 9, 10]
>>> y
[43, 3123, 543, 76, 879, 32, 14241, 342, 3]

因此我们缺少值 '3'

该行为的原因是我提到的那个吗?还是我做错了什么?

最佳答案

只需稍微更改您的代码,遍历 x 的副本即 x[:]。您在遍历列表的同时修改列表。所以这就是为什么您缺少值 3

for i in x[:]:
if i in y:
x.remove(i)
y.remove(i)

和替代方法

x,y = [i for i in x if i not in y],[j for j in y if j not in x]

关于python - 从python中的两个列表中删除公共(public)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44033894/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com