>>> another_palindrome('halibut')
False
Итерируем по структурам кода
с помощью itertools
itertools содержит особые функции итератора. Каждая из них возвращает один
элемент при каждом вызове из цикла for … in и запоминает свое состояние между
вызовами.
Функция chain() проходит по своим аргументам, как если бы они были единым
итерабельным объектом:
>>> import itertools
>>> for item in itertools.chain([1, 2], ['a', 'b']):
... print(item)
...
1
2
a
b
154
Глава 5. Py Boxes: модули, пакеты и программы
Функция cycle() является бесконечным итератором, проходящим в цикле по
своим аргументам:
>>> import itertools
>>> for item in itertools.cycle([1, 2]):
... print(item)
...
1
2
1
2
.
.
.
…и т. д.
Функция accumulate() подсчитывает накопленные значения. По умолчанию она
высчитывает сумму:
>>> import itertools
>>> for item in itertools.accumulate([1, 2, 3, 4]):
... print(item)
...
1
3
6
10
В качестве второго аргумента функции accumulate() вы можете передать функ-
цию, и она будет использована вместо сложения. Функция должна принимать два
аргумента и возвращать одно значение. В этом примере высчитывается произве-
дение:
>>> import itertools
>>> def multiply(a, b):