Присоединение к множеству упорядоченных целочисленных итераторов Python

Вот, на первый взгляд, простая проблема: учитывая список итераторов, которые выдают последовательности целых чисел в порядке возрастания, напишите краткий генератор, который выдает только те числа, которые встречаются в каждой последовательности.

Прочитав несколько статей вчера вечером, я решил взломать на Python абсолютно минимальный полнотекстовый индексатор,как видно здесь (хотя эта версия довольно старая).

Моя проблема сsearch() функция, которая должна перебирать каждый список публикаций и выводить только те идентификаторы документов, которые присутствуют в каждом списке. Как вы можете видеть по ссылке выше, моя текущая нерекурсивная «рабочая» попытка ужасна.

пример:

postings = [[1,   100, 142, 322, 12312],
            [2,   100, 101, 322, 1221],
            [100, 142, 322, 956, 1222]]

Должен дать:

[100, 322]

Для этого есть как минимум одно элегантное рекурсивное решение, но я бы хотел этого избежать, если это возможно. Тем не менее, решение, включающее вложенные выражения генератора,itertools Злоупотребление или любой другой вид гольф-кода приветствуется. :-)

Должна быть возможность устроить так, чтобы функция требовала только столько шагов, сколько есть элементов в наименьшем списке, и не высасывая весь набор целых чисел в память. В дальнейшем эти списки могут быть прочитаны с диска и больше, чем доступно в ОЗУ.

В течение последних 30 минут у меня была идея на кончике моего языка, но я не могу понять это в коде. Помните, это просто для удовольствия!

Ответы на вопрос(7)

Ваш ответ на вопрос