你好,假设我在Python中有两个列表,我想要从这两个列表中删除相同的值。一种可能的解决方案是:
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)
看起来是正确的,但实际上并不是。我猜原因是在从列表中删除项时,索引会继续迭代。因此,在两个值接近的常见情况下,我们将错过后面的值(代码将不会迭代它)。
>>> x
[1, 3, 5, 6, 8, 9, 10]
>>> y
[43, 3123, 543, 76, 879, 32, 14241, 342, 3]
所以我们缺少值为'3'
。
这种行为的原因是我提到的吗?还是我做错了其他事情?
for i in range(len(x)): print(x[i])
。 - Aaron