Веб-версияОткрыть в Telegram

ПостЕсли обычного itertools вам мало, то можно использовать more-itertools.

29 мая 2023
К
Коробка с питоном
Ссылка
нажмите — покажем
Если обычного itertools вам мало, то можно использовать more-itertools. Эта библиотека добавляет огромное количество функций для работы с итераторами. На практике всеми ими не всегда пользуются, поэтому я выделю некоторые из тех, которые сам использую часто. Например, вот так можно разделить список на 3 части: data = ["first", "second", "third", "fourth", "fifth", "sixth", "seventh"] [list(l) for l in divide(3, data)] # [['first', 'second', 'third'], ['fourth', 'fifth'], ['sixth', 'seventh']] Вот еще задача. Надо разделить список с элементами по определенному условию. В этом нам поможет bucket: class Cat: pass class Dog: pass shapes = [Cat(), Dog(), Cat(), Dog(), Cat(), Cat()] result = more_itertools.bucket(shapes, key=lambda x: type(x)) len(list(result[Cat])) # 4 len(list(result[Dog])) # 2 По итогу кошки и собаки будут разделены по своему типу на 2 генератора. Решим самую частую проблему - перевести список с несколькими уровнями вложенностями в "плоский" список: iterable = [(1, 2), ([3, 4], [[5], [6]])] list(more_itertools.collapse(iterable)) #[1, 2, 3, 4, 5, 6] А если в плоский список нам нужно вытащить только элементы с первым уровнем вложенности? list(more_itertools.collapse(iterable, levels=1)) # [1, 2, [3, 4], [[5], [6]]] А вот так мы можем посмотреть, все ли элементы в коллекции уникальные: more_itertools.all_unique([1, 2, 3, 4]) # True more_itertools.all_unique([1, 2, 1, 4]) # False Библиотека решает очень много типовых проблем, поэтому если научиться ей пользоваться - она сэкономит очень много времени. Возможно, я еще буду писать какие-то рецепты с ней, но это не точно 🌚... PyPI | Документация #more_itertools #itertools #библиотека #рецепт
8 · 467 ·

Рядом в ленте

ККоробка с питономDocker 4.19 теперь поддерживает python в docker init docker init - это утилита, которая упрощает добавление docker в проект. Она просто пробежит по вопросам, спККоробка с питономПопался на глаза отличный перевод статьи "Writing Python like it's Rust", который скорее говорит о возможностях аннотаций типов и структур которые их используют
это сообщение
ККоробка с питономКак раз сегодня искал фреимворк для организации работы консьюмера RabbitMQ и на глаза попался Propan - декларативный фреимворк для работы с очередями сообщений.ККоробка с питономЯ знаю на опыте, как иногда не удобно работать с датами и временем в Питоне. В стандартной библиотеке есть как и большое количество типов данных (date, time, tz
ККоробка с питономКоробка с питоном@boxwithpython · канал · Технологии
488подписчиков154постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем