2015-04-01 3 views

ответ

1

Вы можете использовать itertools.zip_longest застегнуть списки различной длины затем использовать список понимание:

>>> from itertools import zip_longest 
>>> [i for i,j in izip_longest(a,b) if i!=j] 
[1, 2, 4] 

Демо:

>>> list(izip_longest(a,b)) 
[(1, 1), (2, 2), (1, 4), (2, None), (4, None)] 
+0

я получаю следующую ошибку - ImportError: не может импортировать имя «izip_longest» – hmm

+0

@hmm жаль, как вы в Python 3 вам нужно 'zip_longest' fised! – Kasramvd

0
a = [1,2,1,2,4] 
b = [1,2,4] 
c= set(a) & set(b) 
d=list(c) 

Ответ только небольшой модификации этого раздела ответ: Find non-common elements in lists

и так как вы не можете перебирать множество объектов: https://www.daniweb.com/software-development/python/threads/462906/typeerror-set-object-does-not-support-indexing

+0

этот код находит общие элементы, мой плохой. – satikin

+0

Вы можете сделать 'set (a) - set (b)', но это также удалит все дубликаты и скопирует порядок, который может и не быть предназначен. –