«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Знакомство с itertools

Знакомство с itertools

Опубликовано 7 ноября 2024 г.
Просматривать:289

Descubriendo itertools

Itertools — одна из самых интересных библиотек Python. Он содержит ряд функций, вдохновленных функциональными языками, которые используются для работы с итераторами.

В этой статье я упомяну некоторые из них, которые привлекли мое внимание больше всего и о которых стоит помнить, чтобы не изобретать велосипед каждый раз.

Считать

Несколько раз я реализовал бесконечный счетчик (ну, он заканчивается
явно в какой-то момент с перерывом), используя цикл while True. itertools предлагает нам лучшую альтернативу:

    from itertools import count

    for i in count(start=2, step=2):
        if i > 10:
            break
        print(i)

    2
    4
    6
    8
    10

Как видно из примера, если бы не разрыв, count возвращал бы бесконечные числа. Приведенный выше код примерно эквивалентен:

    i = 2

    while True:
        if i > 10:
            break

        print(i)
        i  = 2

    2
    4
    6
    8
    10

пакетированный

Функция, позволяющая делать что-то очень распространенное: получать данные из потока пакетами размера n. Давайте рассмотрим пример:

from itertools import batched

    sequence = [1, 2, 3, 4, 5, 6, 7]

    for batch in batched(sequence, 2):  # lotes de tamaño 2
        print(batch)
    (1, 2)
    (3, 4)
    (5, 6)
    (7,)

Следует отметить, что размер последней партии может быть меньше или равен n, как в этом случае. Весьма полезно, вам не кажется?

попарно

Еще одна простая и полезная функция. Учитывая последовательность (фактически, учитывая итератор), она дает нам ее элементы парами.

Давайте рассмотрим это лучше на примере:

from itertools import pairwise

    sequence = [1, 2, 3, 4, 5, 6, 7]

    for a, b in pairwise(sequence):
        print(a, b)
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7

Количество пар на единицу меньше размера входной последовательности.

продукт

Наконец, в этой короткой записи я хочу поговорить о продукте,
реализация декартова произведения.

Полезно заменить вложенный цикл for, проходящий через два потока данных:

from itertools import product

    A = [1, 2, 3]
    B = [5, 6, 7]

    for a, b in product(A, B):
        print(a, b)
   1 5
    1 6
    1 7
    2 5
    2 6
    2 7
    3 5
    3 6
    3 7

Получает параметр, который позволяет нам получить декартово произведение
последовательность сама с собой:

   from itertools import product

    A = [1, 2, 3]

    for a1, a2, a3 in product(A, repeat=3):
        print(a1, a2, a3)
    1 1 1
    1 1 2
    1 1 3
    1 2 1
    1 2 2
    1 2 3
    1 3 1
    1 3 2
    1 3 3
    2 1 1
    2 1 2
    2 1 3
    2 2 1
    2 2 2
    2 2 3
    2 3 1
    2 3 2
    2 3 3
    3 1 1
    3 1 2
    3 1 3
    3 2 1
    3 2 2
    3 2 3
    3 3 1
    3 3 2
    3 3 3

В следующем посте я упомяну и другие функции этого полезного модуля
Стандартная библиотека Python. Надеюсь, это будет вам полезно.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/johnnatan_sandovalcardon/descubriendo-itertools-507j?1. В случае нарушения авторских прав свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3