more_itertools — расширение модуля itertools из стандартной библиотеки.Код: https://github.com/more-itertools/more-itertools
Документация: https://more-itertools.readthedocs.io/
Библиотека содержит больше 100 различный функций-утилит, которые помогают обходить списки и итераторы более удобно, а также извлекать различные срезы, разбивать на части, склеивать обратно, проводить агрегации и так далее. Например:
* извлекать из списка или итератора значения чанками по N элементов (можно указать значение, которым должен быть дополнен последний чанк, либо он просто может быть меньше остальных);
* извлекать из итератора значения пересекающимися парами, по принципу
abcd -> ab, bc, cd;* превращать вложенную структуру в плоскую;
* расклеивать результат
zip обратно в два отдельных итерируемых объекта;* различные группировки, агрегации, оконные функции, выборки, комбинаторика...
Короче, прям много всего есть. Модуль
itertools в стандартной библиотеке — очень бедный. Регулярно натыкаюсь на необходимость делать что-то чанками/батчами, в такие моменты more_itertools выручает.#library