我在python中有两个数组。我想删除第一个数组中存在的所有元素。这里是一个数组的例子:

array1 =[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 4, 6, 8, 10, 3, 6, 9, 4, 8, 5, 10, 6, 7, 8, 9, 10, 11]


结果将是:

array2 = []

这是我所做的:

for x in array1:
    for y in array2:
        if x==y:
            array2.remove(x)

print (array2)


但是我看到的是[10]。为什么?以及如何解决这个问题?

最佳答案

我猜这个问题与您如何循环和删除列表中的项目有关,使程序跳过了第三个10

您可以使用快速列表理解来解决此问题:

array3 = [i for i in array2 if i not in array1]


这基本上是一种更简单的键入方式:

array3 = []
for i in array2:
    if i not in array1:
        array3.append(i)




此外,您可能不想使用集合。例如:

array1 = [1, 2, 3]
array2 = [1, 2, 3, 3, 4, 4, 5, 6]

array3 = list(set(array2) - set(array1))


array3仅包含[4, 5, 6],而不包含[4, 4, 5, 6],因为set不能包含重复项。

关于python - 删除另一个数组中的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58465083/

10-10 19:46