На этом шаге мы рассмотрим еще несколько функций из этого модуля.
Помимо функций, которые мы рассмотрели в предыдущих подразделах, модуль itertools содержит несколько дополнительных функций:
islice (<Последовательность>, <Конечная граница>)
islice (<Последовательность>, <Начальная граница>, <Конечная граница>[, <Шаг>])
Если <Шаг> не указан, будет использовано значение 1. Примеры:
>>> list (itertools.islice ("абвгдезж", 3)) ['а', 'б', 'в'] >>> list (itertools.islice ("абвгдезж", 3, 6)) ['г', 'д', 'е'] >>> list (itertools.islice ("абвгдезж", 3, 6, 2) ) ['г', 'е']
>>> import itertools >>> def funс1 (x, y) : return x + y >>> list (itertools.starmap (func1, [ (1, 2) , (4, 5) , (6, 7) ] ) ) [3, 9, 13] >>> def func2 (x, y, z) : return x + у + z >>> list (itertools.starmap (func2, [(1, 2, 3) , (4, 5, 6) ] ) ) [6, 15]
zip_longest(<Последовательность1>[, ..., <ПоследовательностьN>] [, fillvalue=None])
>>> list (itertools.zip_longest( [1, 2, 3] , [4, 5, 6] ) ) [ (1, 4), (2, 5), (3, 6) ] >>> list (itertools.zip_longest ( [1, 2, 3], [4] ) ) [ (1, 4), (2, None), (3, None) ] >>> list (itertools.zip_longest ( [1, 2, 3], [4], fillvalue=0 ) ) [ (1, 4), (2, 0), (3, 0) ] >>> list (zip ( [1, 2, 3], [4] ) ) [(1, 4)]
>>> # Выполняем сложение >>> list (itertools.accumulate ( [1, 2, 3, 4, 5, 6])) [1, 3, 6, 10, 15, 21] >>> # [1, 1+2, 3+3, 6+4, 10+5, 15+6] >>> # Выполняем умножение >>> def func(x, у) : return x * у >>> list (itertools.accumulate ([1, 2, 3, 4, 5, 6], func)) [1, 2, 6, 24, 120, 720] >>> # [1, 1*2, 2*3, 6*4, 24*5, 120*6]
chain(<Последовательность1>[, ..., <ПоследовательностьN>])
>>> arr1, arr2, arr3 = [1, 2, 3], [4, 5], [6, 7, 8, 9] >>> list (itertools.chain (arrl, arr2, arr3)) [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list (itertools.chain("abc", "defg", "hij")) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] >>> list (itertools.chain ("abc", ["defg", "hij"])) ['a', 'b', 'c', 'defg', 'hij']
>>> list(itertools.chain.from_iterable(["abc", "defg", "hij"])) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
>>> arr = [1, 2, 3] >>> itertools.tee (arr) (<itertools._tee object at 0x00FD8760>, <itertools.t_ee object at 0x00FD8738>) >>> itertools.tee (arr, 3) (<itertools._tee object at 0x00FD8710>, <itertools._tee object at 0x00FD87D8>, <itertools._tee object at 0x00FD87B0>) >>> list (itertools.tee (arr) [0] ) [1, 2, 3] >>> list (itertools.tee (arr) [1] ) [1, 2, 3]
Со следующего шага мы начнем рассматривать словари.