Мне было интересно, есть ли библиотека сравнения, которая работает с итераторами / генераторами для повышения производительности. В идеале и параметры, и ответы должны быть итераторами, чтобы не преобразовывать их в списки.
Мой "текст" хранится в (своего рода) древовидной структуре, и я использую итератор для просмотра текста. Например, если я использую SequenceMatcher
из difflib
, я должен преобразовать свои итераторы в списки до этого: sm = SequenceMatcher(None, list(iterator1, iterator2)
.
Было бы также полезно, если бы библиотека возвращала результаты сравнения в виде итераторов, что не относится к difflib
, например. sm.get_opcodes()
возвращает список.
Я также быстро проверил google-diff-match-patch
, но, похоже, он разрешает только тексты, а не списки - поэтому мне пришлось бы преобразовывать свои итераторы в обычный текст. Таким образом, хотя это должно быть быстрее, я могу закончить с худшими результатами, выполняя эту конкатенацию (я попробую это в какой-то момент, но переход на эту библиотеку потребует много изменений в коде).
Итак, есть ли библиотека, которая поддерживает итераторы при дифференцировании? или это на самом деле невозможно, учитывая детали алгоритма?