Я просто собираю превосходные решения, уже приведенные выше.
Если вы заботитесь о поддержании первоначального порядка, в котором были элементы в array_2
, то я думаю, что вы должны использовать remove
:
array_1 = ['one', 'two']
array_2 = ['one', 'two', 'one', 'three', 'four']
array_3 = list(array_2)
for x in array_1:
try:
array_3.remove(x)
except ValueError:
pass
print(array_3)
Если не имеет значения, каков окончательный порядок элементов, тогда использование Counter
гораздо эффективнее, поскольку оно зацикливается на обоих списках только один раз:
from collections import Counter
array_1 = ['one', 'two']
array_2 = ['one', 'two', 'one', 'three', 'four']
array_3 = list((Counter(array_2) - Counter(array_1)).elements())
print(array_3)