Присоединение к множеству упорядоченных целочисленных итераторов Python
Вот, на первый взгляд, простая проблема: учитывая список итераторов, которые выдают последовательности целых чисел в порядке возрастания, напишите краткий генератор, который выдает только те числа, которые встречаются в каждой последовательности.
Прочитав несколько статей вчера вечером, я решил взломать на Python абсолютно минимальный полнотекстовый индексатор,как видно здесь (хотя эта версия довольно старая).
Моя проблема сsearch()
функция, которая должна перебирать каждый список публикаций и выводить только те идентификаторы документов, которые присутствуют в каждом списке. Как вы можете видеть по ссылке выше, моя текущая нерекурсивная «рабочая» попытка ужасна.
пример:
postings = [[1, 100, 142, 322, 12312],
[2, 100, 101, 322, 1221],
[100, 142, 322, 956, 1222]]
Должен дать:
[100, 322]
Для этого есть как минимум одно элегантное рекурсивное решение, но я бы хотел этого избежать, если это возможно. Тем не менее, решение, включающее вложенные выражения генератора,itertools
Злоупотребление или любой другой вид гольф-кода приветствуется. :-)
Должна быть возможность устроить так, чтобы функция требовала только столько шагов, сколько есть элементов в наименьшем списке, и не высасывая весь набор целых чисел в память. В дальнейшем эти списки могут быть прочитаны с диска и больше, чем доступно в ОЗУ.
В течение последних 30 минут у меня была идея на кончике моего языка, но я не могу понять это в коде. Помните, это просто для удовольствия!