Модуль itertools - сборник полезных итераторов. itertools.count(start=0, step=1) - бесконечная арифметическая прогрессия с первым членом start и шагом step. itertools.cycle(iterable) - возвращает по одному значению из последовательности, повторенной бесконечное число раз. itertools.repeat(elem, n=Inf) - повторяет elem n раз. itertools.accumulate(iterable) - аккумулирует суммы. accumulate([1,2,3,4,5]) --> 1 3 6 10 15 itertools.chain(*iterables) - возвращает по одному элементу из первого итератора, потом из второго, до тех пор, пока итераторы не кончатся. itertools.combinations(iterable, [r]) - комбинации длиной r из iterable без повторяющихся элементов. combinations('ABCD', 2) --> AB AC AD BC BD CD itertools.combinations_with_replacement(iterable, r) - комбинации длиной r из iterable с повторяющимися элементами. combinations_with_replacement('ABCD', 2) --> AA AB AC AD BB BC BD CC CD DD itertools.compress(data, selectors) - (d[0] if s[0]), (d[1] if s[1]), ... compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F itertools.dropwhile(func, iterable) - элементы iterable, начиная с первого, для которого func вернула ложь. dropwhile(lambda x: x < 5, [1,4,6,4,1]) --> 6 4 1 itertools.filterfalse(func, iterable) - все элементы, для которых func возвращает ложь. itertools.groupby(iterable, key=None) - группирует элементы по значению. Значение получается применением функции key к элементу (если аргумент key не указан, то значением является сам элемент).
>>> from itertools import groupby
>>> things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"),
... ("vehicle", "speed boat"), ("vehicle", "school bus")]
>>> for key, group in groupby(things, lambda x: x[0]):
... for thing in group:
... print("A %s is a %s." % (thing[1], key))
... print()
A bear is a animal.
A duck is a animal.
A cactus is a plant.
A speed boat is a vehicle.
A school bus is a vehicle.
itertools.islice(iterable[, start], stop[, step]) - итератор, состоящий из среза. itertools.permutations(iterable, r=None) - перестановки длиной r из iterable. itertools.product(*iterables, repeat=1) - аналог вложенных циклов. product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy itertools.starmap(function, iterable) - применяет функцию к каждому элементу последовательности (каждый элемент распаковывается). starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000 itertools.takewhile(func, iterable) - элементы до тех пор, пока func возвращает истину. takewhile(lambda x: x<5, [1,4,6,4,1]) --> 1 4 itertools.tee(iterable, n=2) - кортеж из n итераторов. itertools.zip_longest(*iterables, fillvalue=None) - как встроенная функция zip, но берет самый длинный итератор, а более короткие дополняет fillvalue. zip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D- | |
| |
Просмотров: 584 | |
Всего комментариев: 0 | |