51 lines
2.9 KiB
Markdown
51 lines
2.9 KiB
Markdown
|
---
|
|||
|
title: Itertools
|
|||
|
localeTitle: Itertools
|
|||
|
---
|
|||
|
Itertools - это модуль функций python, возвращающий генераторы, объекты, которые работают только при повторении. Некоторые примеры функций itertool включают, но не ограничиваются следующими: chain (), imap (), product () и compress ().
|
|||
|
|
|||
|
### цепь ()
|
|||
|
|
|||
|
Функция chain () принимает несколько итераторов в качестве аргументов и возвращает один итератор, который создает содержимое всех из них, как если бы они поступали из одной последовательности.
|
|||
|
|
|||
|
```py
|
|||
|
import itertools
|
|||
|
list(itertools.chain([1, 2], [3, 4]))
|
|||
|
|
|||
|
# Output
|
|||
|
# [1, 2, 3, 4]
|
|||
|
```
|
|||
|
|
|||
|
### Ислица ()
|
|||
|
|
|||
|
Функция islice () возвращает итератор, который возвращает выбранные элементы из входного итератора по индексу. Он принимает те же аргументы, что и оператор среза для списков: старт, стоп и шаг. Запуск и остановка являются необязательными.
|
|||
|
|
|||
|
```py
|
|||
|
import itertools
|
|||
|
list(itertools.islice(count(), 5))
|
|||
|
|
|||
|
# Output
|
|||
|
# [0,1, 2, 3, 4]
|
|||
|
```
|
|||
|
|
|||
|
### izip ()
|
|||
|
|
|||
|
izip () возвращает итератор, который объединяет элементы нескольких итераторов в кортежи. Он работает как встроенная функция zip (), за исключением того, что возвращает итератор вместо списка.
|
|||
|
|
|||
|
```py
|
|||
|
import itertools
|
|||
|
list(izip([1, 2, 3], ['a', 'b', 'c']))
|
|||
|
|
|||
|
# Output
|
|||
|
# [(1, 'a'),(2, 'b'),(3, 'c')]
|
|||
|
```
|
|||
|
|
|||
|
Комбинаторные итераторы:
|
|||
|
|
|||
|
Итерационные аргументы product () p, q, ... \[repeat = 1\] декартово произведение, эквивалентное вложенному циклу перестановки () p \[, r\] r-длины, все возможные упорядочения, не повторяющиеся элементы комбинаций () p, r r-length кортежей в отсортированном порядке, без повторных элементов комбинации _с_ заменами () p, r r-length кортежей в отсортированном порядке с повторяющимися элементами продукт ('ABCD', repeat = 2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD перестановки ('ABCD', 2) AB AC AD BA BC BD CA CB CD DA DB DC
|
|||
|
|
|||
|
комбинации ('ABCD', 2) AB AC AD BC BD CD
|
|||
|
|
|||
|
комбинации _с_ заменой («ABCD», 2) AA AB AC AD BB BC BD CC CD DD
|
|||
|
|
|||
|
Источник: https: //docs.python.org/3/library/itertools.html
|