Разница в списке Python

Я пытаюсь найти все элементы, которые находятся в списке A, а не в списке B.

Я думал, что что-то вроде newList = list(set(a) & !set(b)) или newList = list(set(a) & (not set(b))) будет работать, но это не так.

Если есть лучший способ добиться того, что я пытаюсь сделать, кроме этого?

 newList = [] for item in a: if item not in b: newList.append(item) 

Также важно, что это нужно сделать в Python 2.6

Вы ищете установленную разницу :

 newList = list(set(a).difference(b)) 

В качестве альтернативы используйте оператор минус:

 list(set(a) - set(b)) 

Ты пробовал

 list(set(a) - set(b)) 

Вот список всех операций набора Python .

Но это излишне создает новый набор для b . Как упоминает @phihag, метод difference предотвратит это.

Если вы заботитесь о поддержании порядка:

 def list_difference(a, b): # returns new list of items in a that are not in b b = set(b) return [x for x in a if x not in b] 
 >>> list1 = [1,2,3,4,5] >>> list2 = [4,5,6,7,8] >>> print list(set(list1)-set(list2)) [1, 2, 3]