from itertools import count
cnt = count(start=0, step=2)
for i in range(10):
print(next(cnt))
from itertools import cycle
cyls = cycle([1, 2, 3])
print(next(cyls)) # 1
print(next(cyls)) # 2
print(next(cyls)) # 3
print(next(cyls)) # 1
from itertools import repeat
repearter = repeat('PY')
next(repearter) # PY
next(repearter) # PY
next(repearter) # PY
list(repeat('PY', 2))
from itertools import accumulate
from operator import mul
print("Сумма после каждой итерации:")
print(list(accumulate([1, 4, 5, 7])))
# Вывод: [1, 5, 10, 17]
print("Умножение после каждой итерации:")
print(list(accumulate([1, 4, 5, 7], mul)))
# Вывод: [1, 4, 20, 140]
from itertools import chain
print("Итерация по элементам списка:")
print(list(chain([1, 4, 5, 7], [1, 6, 5, 9], [8, 10, 5, 4])))
#Вывод: [1, 4, 5, 7, 1, 6, 5, 9, 8, 10, 5, 4]
from itertools import compress
print("Вывод элементов, в индексе маски которого стоит значение True или 1:")
print(list(compress('GEEKSFORGEEKS', [1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0])))
#Вывод: ['G', 'F', 'G']
from itertools import dropwhile
print("Вывод значений после элемента, если функция возвращает false:")
print(list(dropwhile(lambda x: x % 2 == 0, [2, 4, 5, 7, 8])))
#Вывод: [5, 7, 8]
from itertools import filterfalse
print("Вывод значений, если функция возвращает false:")
print(list(filterfalse(lambda x: x % 2 == 0, [2, 4, 5, 7, 8])))
#Вывод нечетных элементов [5, 7]
from itertools import groupby
def grouper(item):
"""Будем использовать эту функцию для группировки сортировки."""
return item['country']
data = [
{'city': 'Москва', 'country': 'Россия'},
{'city': 'Новосибирск', 'country': 'Россия'},
{'city': 'Пекин', 'country': 'Китай'},
]
for key, group_items in groupby(data, key=grouper):
print('Key: %s' % key)
for item in group_items:
print('Item: %s' % item)
from itertools import islice
print("Выборочны значения списка:")
print(list(islice([2, 4, 5, 7, 8, 10, 20], 1, 6, 2)))
#Вывод [4, 7, 10]
from itertools import pairwise
print("Выборочны значения списка:")
print(list(pairwise('ABCDEFG')))
#Вывод [('A', 'B'), ('B', 'C'), ('C', 'D'), ('D', 'E'), ('E', 'F'), ('F', 'G')]
from itertools import starmap
li = [(1, 10, 5), (8, 4, 1), (5, 4, 9), (11, 10, 1)]
print("Возвращает минимальные значения из кортежей:")
print(list(starmap(min, li)))
#Вывод: [1, 1, 4, 1]
from itertools import takewhile
print("Выводит значения, пока функция не будет равна False:")
print(list(takewhile(lambda x : x % 2 == 0, [2, 4, 6, 7, 8, 10, 20])))
#Вывод [2, 4, 6]
from itertools import tee
iter1, iter2, iter3 = tee([1, 2, 3], 3)
print(list(iter1))
print(list(iter2))
print(list(iter3))
# Вывод: [1, 2, 3]
# Вывод: [1, 2, 3]
# Вывод: [1, 2, 3]
from itertools import zip_longest
print("Вывод пар элементов из двух последовательностей: ")
print(*(zip_longest('GesoGes', 'ekfr', fillvalue ='_')))
#Вывод ('G', 'e') ('e', 'k') ('s', 'f') ('o', 'r') ('G', '_') ('e', '_') ('s', '_')
from itertools import product
print("Декартово произведение с использованием повторения:")
print(list(product([1, 2], repeat=2)))
# Вывод: [(1, 1), (1, 2), (2, 1), (2, 2)]
print("Декартово произведение контейнеров:")
print(list(product(['geeks', 'for', 'geeks'], '2')))
# Вывод: [('geeks', '2'), ('for', '2'), ('geeks', '2')]
print("Декартово произведение контейнеров:")
print(list(product('AB', [3, 4])))
# Вывод: [('A', 3), ('A', 4), ('B', 3), ('B', 4)]
from itertools import permutations
print("Все перестановки списка:")
print(list(permutations([1, 'geeks'], 2)))
# Вывод: [(1, 'geeks'), ('geeks', 1)]
print("Все перестановки строки:")
print(list(permutations('AB')))
# Вывод: [('A', 'B'), ('B', 'A')]
print("Все перестановки контейнера:")
print(list(permutations(range(3), 2)))
# Вывод: [(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)]
from itertools import combinations
print("Комбинация списка:")
print(list(combinations(['A', 2], 2)))
# Вывод: [('A', 2)]
print("Комбинация строк:")
print(list(combinations('ABC', 2)))
# Вывод: [('A', 'B'), ('A', 'C'), ('B', 'C')]
print("Комбинация списка через генератор:")
print(list(combinations(range(4), 3)))
# Вывод:[(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]
from itertools import combinations_with_replacement
print("Комбинация списка")
print(list(combinations_with_replacement(['A', 2], 2)))
# Вывод: [('A', 'A'), ('A', 2), (2, 2)]
print("Комбинация строк")
print(list(combinations_with_replacement("ABС", 2)))
# Вывод: [('A', 'A'), ('A', 'B'), ('A', 'С'), ('B', 'B'), ('B', 'С'), ('С', 'С')]
print("Комбинация списка через генератор")
print(list(combinations_with_replacement(range(4), 3)))
# Вывод: [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 2), (0, 2, 3), (0, 3, 3), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 2), (1, 2, 3), (1, 3, 3), (2, 2, 2), (2, 2, 3), (2, 3, 3), (3, 3, 3)]