Как найти общие элементы в списке списков?

Я пытаюсь выяснить, как сравнить n количество списков, чтобы найти общие элементы. Например:

p=[ [1,2,3], [1,9,9], .. .. [1,2,4] >> print common(p) >> [1] 

Теперь, если я знаю количество элементов, я могу делать сравнения, такие как:

 for a in b: for c in d: for x in y: ... 

но это не сработает, если я не знаю, сколько элементов p. Я рассмотрел это решение, которое сравнивает два списка: https://stackoverflow.com/a/1388864/1320800

но, проведя 4 часа, пытаясь понять, как сделать это рекурсивным, решение все еще ускользает от меня, поэтому любая помощь будет высоко оценена!

7 Solutions collect form web for “Как найти общие элементы в списке списков?”

Вы ищете множество пересечений всех подписок, а тип данных, который вы должны использовать для заданных операций, – это набор:

 result = set(p[0]) for s in p[1:]: result.intersection_update(s) print result 
 >>> p=[ [1,2,3], [1,9,9], [1,2,4]] >>> set(p[0]).intersection(*p) set([1]) 

Почему не просто:

 set.intersection(*map(set, p)) 

Результат:

 set([1]) 

Или вот так:

 ip = iter(p) s = set(next(ip)) s.intersection(*ip) 

Результат:

 set([1]) 

редактировать:

скопирован с консоли:

 >>> p = [[1,2,3], [1,9,9], [1,2,4]] >>> set.intersection(*map(set, p)) set([1]) >>> ip = iter(p) >>> s = set(next(ip)) >>> s.intersection(*ip) set([1]) 
 reduce(lambda x, y: x & y, (set(i) for i in p)) 
 p=[ [1,2,3], [1,9,9], [1,2,4]] ans = [ele[0] for ele in zip(*p) if len(set(ele)) == 1] 

Результат:

 >>> ans [1] 

Простое решение (однострочное):

 set.intersection(*[set(list) for list in p]) 

Вы ищете множество пересечений всех подписок, а тип данных, который вы должны использовать для заданных операций, – это набор:

 result = set(p[0]) for s in p[1:]: result.intersection_update(s) print result 

Однако в списке есть ограничение на 10 списков. Все более крупные причины «результат» список не работает. Предполагая, что вы сделали «результат» в список по list(result) .

Убедитесь, что вы result.sort() чтобы убедиться, что он заказан, если вы зависеть от него таким образом.

  • Как эффективно сравнивать два неупорядоченных списка (не множества) в Python?
  • Почему сравнение строк в Python с использованием «==» или «is» иногда приводит к другому результату?
  • Сравнение объектов исключения в Python
  • Как я могу исправить эту ошибку «TypeError: 'str' не вызываемый»?
  • Найти самый старый / самый молодой объект datetime в списке
  • Сравнение изображения в url с изображением в файловой системе в python
  • Использование OR сравнения с операторами IF
  • приблизительное сравнение в python
  • Почему {} | | () | str | set | и т. Д. > n равно True в python2.x?
  • python сравнивает два листа excel и добавляет правильную запись
  • Сравнение времени Python
  •  
    Interesting Posts for Van-Lav

    Получить первую непустую строку из списка в python

    Возврат точных совпадений в верхней части Django Queryset

    Исключение, вызванное многопроцессорностью Пул не обнаружен

    Как распечатать результаты сопоставления регулярных выражений в python 3?

    Эффективный способ создания новых столбцов в пандах

    _shutdown AttributeError (игнорируется) при использовании кода Linting, который использует M2Crypto

    В чем причина ошибки mysqldb Warning: Усеченная неправильная ошибка DOUBLE?

    Итерирование через asyncio.coroutine

    Стэнфордский NER с python NLTK терпит неудачу со строками, содержащими несколько «!!» s?

    Python: AttributeError: _dep_map

    Используя сборщик Django с помощью boto S3 через некоторое время «Ошибка 32: Сломанная труба»

    Matplotlib: отображение значений массива с помощью imshow

    Скорость против безопасности против совместимости с методами для конкатенации строк в Python

    Python обратный / инвертирующий отображение

    Ошибка сложности рендеринга агломерата Matplotlib Agg

    Python - лучший язык программирования в мире.