Рубрики
Без рубрики

Python Itertools

Python Itertools, Itertools Python 3, Комбинации Python Itertools, цепь, islice, накапливание, модуль для модуля Python Itertools, Groupby, Compress

Автор оригинала: Pankaj Kumar.

Модуль Python Itertools очень полезен в создании эффективных итераторов. Почти в каждой программе вы пишете с любым языком программирования, одна из заданий, которая обычно всегда присутствует, – это итерация. Пересекающаяся последовательность объектов и манипулирование их очень распространена.

Много раз при выполнении этих общих операций мы упускаем управление использованием памяти переменных, размер последовательности итерации и создании риска неэффективного использования кода. С Itertools Модуль в Python это может быть предотвращено с его функциями.

Python Itertools модуль

Модуль Python Itertools обеспечивает различные способы манипулирования последовательностью, пока мы пройдем. Некоторые из примеров Some Commons передаются здесь.

Цепочка Python Itertools ()

Python Itertools цепь () Функция просто принимает несколько повторяемых и возвращает одну последовательность, как если бы все элементы принадлежат к этой последовательности.

Синтаксис для цепочки работает как:

itertools.chain(*sequence)

Давайте поставим это в примере:

from itertools import *

for value in chain([12.3, 2.5, 34.13], ['JournalDev', 'Python', 'Java']):
    print(value)

Выход будет:

Неважно, если последовательности пройдены для разных данных.

Автоматизация последовательностей с ISLICE () и счетчиком ()

Itertools islice () и count () Функции предоставляют нам возможность быстро ускорить и нарезать их.

Давайте предоставляем образец кода-фрагмента:

from itertools import *

for num in islice(count(), 4):
    print(num)
print('I stopped at 4.')

for num in islice(count(), 15, 20):
    print(num)
print('I started at 15 and stopped at 20.')

for num in islice(count(), 5, 50, 10):
    print(num)
print('I started at 5 and leaped by 10 till 50.')

Выход будет:

Клонирование последовательностей с TEE ()

Лучший способ, которым мы можем сделать клон последовательности, использует Tee () функция. Помните, что оригинальная последовательность не может использоваться, как только мы клонировали в 2 последовательности.

Давайте поставим это в примере:

from itertools import *

single_iterator = islice(count(), 3)
cloned1, cloned2 = tee(single_iterator)

for num in cloned1:
    print('cloned1: {}'.format(num))
for num in cloned2:
    print('cloned2: {}'.format(num))

Выход будет:

Велоспорт через последовательности с циклом ()

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

Синтаксис для цикл работает как:

itertools.cycle(sequence)

Давайте предоставляем образец кода-фрагмента:

from itertools import *

index = 0
for item in cycle(['Python', 'Java', 'Ruby']):
    index += 1
    if index == 12:
        break
    print(index, item)

Выход будет:

Накапливая операции с накоплением ()

С накапливаться () Функция, мы можем выполнять математические операции с последовательностью и возвращать результаты. Как добавить количество номеров к предыдущему значению в последовательности. Давайте поставим это в примере:

from itertools import *

data = accumulate(range(10))
for item in data:
    print(item)

Выход будет:

Давайте попробуем другой оператор, как Умножение в виде:

from itertools import *
import operator

data = accumulate(range(1, 5), operator.mul)
for item in data:
    print(item)

Выход будет:

Функциональные элементы с Showwile ()

С Drowwile () Функция, мы можем Предметы последовательности Filer до тех пор, пока состояние не станет ложным Отказ Как только это становится ложно, он останавливает процесс фильтра.

Синтаксис для Showwile работает как:

itertools.dropwhile(predicate, sequence)

Давайте предоставляем образец кода-фрагмента:

from itertools import *

data = dropwhile(lambda x: x < 5, [3, 12, 7, 1, -5])
for item in data:
    print(item)

Выход будет:

Функциональные элементы со скоростью ()

С Thingile () Функция, мы можем Предметы последовательности Filer до тех пор, пока не станет настоящим условием Отказ Как только это становится правдой, он останавливает процесс фильтра.

Синтаксис для Потратьте работает как:

itertools.takewhile(predicate, sequence)

Давайте поставим это в примере:

from itertools import *

data = takewhile(lambda x: x < 5, [3, 12, 7, 1, -5])
for item in data:
    print(item)

Выход будет:

Изготовление комбинаций с комбинациями ()

Когда дело доходит до создания комбинаций всех значений в списке, пользовательская логика может ошибаться ни в одном количестве способов. Даже здесь модуль Itertools имеет функцию спасения.

Синтаксис для Комбинации () работает как:

itertools.combinations(sequence, r)

Давайте предоставляем образец кода-фрагмента:

from itertools import *

data = list(combinations('ABCD', 2))
for item in data:
    print(item)

Вывод будет: стоит заметить, что:

  • Если элементы в последовательности отсортированы, а также комбинация будет сортироваться.
  • Если элементы в последовательности уникальны, чем комбинированные данные не будут содержать никакой дублированной комбинации.

Повторные комбинации с комбинациями_with_replace ()

Это работает так же, как Комбинации () функция, как показано выше. Разница в том, что это может иметь несколько повторителей в комбинации данных.

Синтаксис для Комбинации_with_replace работает как:

itertools.combinations_with_replacement(sequence, r)

Давайте поставим это в примере:

from itertools import *

data = list(combinations_with_replacement('ABCD', 2))
for item in data:
    print(item)

Выход будет:

Фильтр сжатия с Compress ()

Сжатие данных легко на основе логического списка с использованием Compress () функция.

Синтаксис для сжатия работает как:

itertools.compress(sequence, selector)

Давайте предоставляем образец кода-фрагмента:

from itertools import *

filtered = [True, False, False, True, True]
to_filter = 'PQRSTUVW'
data = list(compress(to_filter, filtered))
for item in data:
    print(item)

Выход будет:

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

Ссылка: API док