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

Я пытаюсь выяснить, как сравнить 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
  • python сравнивает два листа excel и добавляет правильную запись
  • python: какой файл более новый и на сколько времени
  • Найти самый старый / самый молодой объект datetime в списке
  • Сравнение изображения в url с изображением в файловой системе в python
  • Проверка начала строки с XXXX
  • Python: встроенные функции max / min зависят от порядка параметров
  • Python - лучший язык программирования в мире.