Найти (и сохранить) дубликаты подсписка в python - PullRequest
5 голосов
/ 12 ноября 2009

У меня есть список списков (подсписок), который содержит номера, и я хочу только сохранить их во всех (под) списках.

Пример:

x = [ [1, 2, 3, 4], [3, 4, 6, 7], [2, 3, 4, 6, 7]]

output => [3, 4]

Как я могу это сделать?

Ответы [ 4 ]

9 голосов
/ 12 ноября 2009
common = set(x[0])
for l in x[1:]:
    common &= set(l)
print list(common)

или

import operator
print reduce(operator.iand, map(set, x))
7 голосов
/ 12 ноября 2009

В одном вкладыше:

>>> reduce(set.intersection, x[1:], set(x[0]))
set([3, 4])
2 голосов
/ 18 декабря 2012
def f(a, b):
    return list(set(a).intersection(set(b)))

reduce(f, x)
1 голос
/ 30 января 2014

Просто еще один способ решения, почти такой же, как у Надии, но без использования Reduce, и я использую карту:

>>> x = [ [1, 2, 3, 4], [3, 4, 6, 7], [2, 3, 4, 6, 7]]
>>> set.intersection(*map(set,x))
set([3, 4])
>>>
...