2013-12-05 3 views
0

У меня есть два списка. Как я могу определить функцию «remove_repeat_element», чтобы удалить из них повторяющиеся элементы? ?Python Удалить элемент повторения

def remove_repeat_element(a, b): 
    ... ... 

a = ['bd09fdf7-918e-4a5e-8338-0f6fe78fd238'] 
b = ['bd09fdf7-918e-4a5e-8338-0f6fe78fd238', '3c26f383-da50-446c-8613-64e1068bd57e'] 

result = remove_repeat_element(a, b) 
print result 
>>> ['3c26f383-da50-446c-8613-64e1068bd57e'] 

Может кто-нибудь дать мне совет? Спасибо большое!

+1

Смотрите этот [пост] (http://stackoverflow.com/a/15188973/1982962) –

+0

И другие, где порядок не сохранилось. –

ответ

10

Вы можете использовать sets:

>>> a = ['bd09fdf7-918e-4a5e-8338-0f6fe78fd238'] 
>>> b = ['bd09fdf7-918e-4a5e-8338-0f6fe78fd238', '3c26f383-da50-446c-8613-64e1068bd57e'] 
>>> list(set(b) - set(a)) 
['3c26f383-da50-446c-8613-64e1068bd57e'] 
2

Мое предложение:

c = [x for x in b if x not in a] 

Это довольно прямо вперед, чтобы написать и достаточно эффективно, как list comprehension.

Надеюсь, это поможет!

Update:

Для более эффективной проверки членства, используйте set вместо list.

a = set(a) 
c = [x for x in b if x not in a] 

Это было бы еще быстрее, и не говоря уже о улучшении, когда list велико.

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