2015-02-17 5 views

ответ

8

Вы можете использовать список, чтобы сделать это за вас.

filtered = [i for i in A if i not in B] 

Если списки и большие, вы можете рассмотреть вопрос о создании set из B для ускорения членства поиска

setB = set(B) 
filtered = [i for i in A if i not in setB] 

Это решение поддерживает порядок A и дубликатов, которые существуют в A.

+0

Это может быть просто, как насчет сложности? – Avoen

+0

@Avoen Если вы конвертируете 'B' в' set', это 'O (N)' сложность времени. – CoryKramer

4

я всегда хотел использовать наборы для этого:

set(A) - set(B) 

редактирования: за исключением, если А имеет дубликаты или вы заботитесь о заказе, а затем использовать @ ответ Cyber ​​в

+2

Это работает хорошо, пока заказ и количество предметов не имеют значения. –

-2

наборы идеально подходят для этой цели

set(A) - set(B) 

например

>>> set([2,2,2,3,3,4])- set([1,2,2,4,5]) 
set([3]) 

кстати. это выглядит как this

Смежные вопросы