Forwarded from Python Academy
Another yet itertools tricks
Всем привет! Не так давно мы рассматривали 3 трюка с модулем
Начнем с функции
Для того, чтобы составить комбинацию с повторениями, используют функцию
Ну и в заключение, рассмотрим функцию
#модули #itertools
Всем привет! Не так давно мы рассматривали 3 трюка с модулем
itertools
. Сегодня мы рассмотрим еще несколько полезных фишек этого крутого модуля.Начнем с функции
combinations
. Она позволяет составлять комбинации элементов из итерируемых объектов без повторений. Первый аргумент это сам объект, а второй – длина комбинации.Для того, чтобы составить комбинацию с повторениями, используют функцию
combinations_with_replacement
. Делает она абсолютно все то же самое что и предыдущая, с одним исключением – теперь в комбинации могут быть повторы.Ну и в заключение, рассмотрим функцию
compress
, применяющую "маску" из второго аргумента функции к первому. То есть, если в маске на этом месте стоит единица, то в исходном массиве цифра остается нетронутой, и наоборот.#модули #itertools
Forwarded from Python Community
⚡️ Бесконечные итераторы
Продолжаем рассказывать про итераторы, а если быть конкретнее, про модуль itertools. itertools — модуль, хранящий в себе множество готовых итераторов, как, например, groupby.
#миниурок #itertools
Продолжаем рассказывать про итераторы, а если быть конкретнее, про модуль itertools. itertools — модуль, хранящий в себе множество готовых итераторов, как, например, groupby.
count(start, step=1)
— итератор, считающий от start, добавляя step до бесконечности. Он чем-то напоминает range, но без ограничений.cycle(elems)
— бесконечное количество раз возвращает элементы внутри elems по порядку.repeat(elem, n)
— возвращает n раз или бесконечно значение elem.#миниурок #itertools
Forwarded from Python Community
⚡️ Продолжаем рассматривать модуль itertools
Думаю, стоит вам ещё рассказать про этот модуль и интересные функции. Начнём!
#миниурок #itertools
Думаю, стоит вам ещё рассказать про этот модуль и интересные функции. Начнём!
zip_longest(a, b, fill_value)
— очень удобный итератор. Работает также как и zip, но если длина списков разная, заполняет их fill_value.takewhile(func, seq)
— возвращает значения из seq, пока func не вернёт False.chain(a, b,...)
— соединяет два и более итерируемых объектов в один.product(a, b...)
— декартово произведение итерируемых объектов.#миниурок #itertools
Forwarded from Коробка с питоном
На сегодня расскажу ещё пару рецептов с
1)
2) Получить последний элемент можно при помощи
Ещё есть
3)
4) Ну и в конце про
#itertools #more_itertools #библиотека
more_itertools
.1)
map_if
работает как обычный map
, но применяет функцию на элемент только если оно попадает под условие. Например, вот так мы можем возвести в квадрат только те числа, которые делятся на 2 нацело:example = [1, 2, 3, 4, 5, 6, 7, 8]
list(map_if(example, lambda x: x % 2 == 0, lambda x: x * x)) # [1, 4, 3, 16, 5, 36, 7, 64]
2) Получить последний элемент можно при помощи
last
. Возникает вопрос а зачем он существует, если можно указать sequence[-1]
? Ответом является то, что last
позволяет указать, что ему возвращать, если элементов в коллекции нет:last([1, 2, 3]) # Очевидно получим 3
last([], 0) # Список пустой, но получим 0
[][-1] # Получим IndexError
Ещё есть
first
- как понятно из названия, он получает первый элемент.3)
map_except
тоже работает как map
, но умеет игнорировать ошибки. Например, мы хотим получить только те элементы, которые получилось привести к целому числу:example = [1, "1", "2", "test", "three", object, 4.0]
list(map_except(int, example, ValueError, TypeError)) # [1, 1, 2, 4]
4) Ну и в конце про
take
- он просто берет N элементов из итерируемого объекта:example = range(10)
take(3, example) # [0, 1, 2]
take(20, example) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - если больше, возьмет доступные
#itertools #more_itertools #библиотека