Ответ 1
Вы ищете множество пересечений всех подписок, а тип данных, который вы должны использовать для заданий набора, - это набор:
result = set(p[0])
for s in p[1:]:
result.intersection_update(s)
print result
Я пытаюсь выяснить, как сравнить 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. Я рассмотрел это решение, которое сравнивает два списка qaru.site/info/29560/...
но, проведя 4 часа, пытаясь понять способ сделать это рекурсивным, решение все еще ускользает от меня, поэтому любая помощь будет высоко оценена!
Вы ищете множество пересечений всех подписок, а тип данных, который вы должны использовать для заданий набора, - это набор:
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()
, чтобы обеспечить его упорядочение, если вы зависите от него таким образом.