У меня есть список списков:
lists = [[1,4,3,2,4], [4,5]]
Я хочу сгладить этот список и удалить все дубликаты; или другими словами, примените операцию объединения набора:
desired_result = [1, 2, 3, 4, 5]
Что самый легкий путь состоит в том, чтобы сделать это? (Я вынужден использовать Python 2.4 для этого проекта),
Set.union
делает то, что вы хотите:
>>> results_list = [[1,2,3], [1,2,4]]
>>> results_union = set().union(*results_list)
>>> print(results_union)
set([1, 2, 3, 4])
Вы также можете сделать это с более чем двумя списками.
профсоюзы не поддерживаются спискими, которые заказываются, но поддерживаются наборами. Проверьте Set.union .
Так как вы, кажется, используете Python 2.5 (это , приятно упомянуть в своем q, если вам нужен A для версий для версий ! = 2.6, текущее производство один, кстати ;-) и хочу список, а не набор в результате, я рекомендую:
import itertools
...
return list(set(itertools.chain(*result_list)))
Itertools , как правило, является отличным способом работы с итераторами (и так с Многие виды последовательностей или коллекций), и я от всей души рекомендую вам познакомиться с ним. Itertools.Chain
, в частности, документирован здесь .
Я использовал следующие пересечения, которые избегают необходимости наборов.
a, b= [[1,2,3], [1,2]]
s = filter( lambda x: x in b, a)
Или,
s = [ x for x in b if x in a ]