【发布时间】:2017-07-25 14:50:06
【问题描述】:
所以我有两个 int 列表 xs 和 ys(任意长度),并希望有效地删除每个列表中出现的重复项。由于您不能/不应该在循环遍历列表时对其进行编辑,因此我的尝试是:
matches = [match for match in xs if match in ys]
for match in matches:
xs.remove(match)
ys.remove(match)
但重要的是,如果该值在 xs 中出现两次但在 ys 中出现一次,则会产生错误,因为“如果在 ys 中匹配”对于相同的值计算为 true 两次,但我需要它只计算一次。
所以澄清一下,如果:
xs = [0, 2, 4, 8, 8, 100]
ys = [1, 3, 5, 8, 8, 8, 10]
那么 8 需要从两个列表中删除两次。
我怎样才能有效地做到这一点?谢谢
edit:列表不一定是有序的,实际上两个列表都可能包含重复项。
【问题讨论】: