В данном посте будет рассказано о применении итераций для имитации функций zip и map.
Мы уже видели, как встроенные функции zip и map позволяют объединять итерируемые объекты и отображать на них функции соответственно. При вызове с несколькими аргументами функция map отображает заданную функцию на элементы, взятые из каждой последовательности, практически тем же способом, каким функция zip объединяет их:
>>> S1 = ‘abc’
>>> S2 = ‘xyz123’
>>> list(zip(S1, S2)) # zip объединяет элементы итерируемых объектов
[(‘a’, ‘x’), (‘b’, ‘y’), (‘c’, ‘z’)]
# zip объединяет элементы, усекая результирующую последовательность
# по длине кратчайшей исходной последовательности
>>> list(zip([-2, -1, 0, 1, 2])) # Единственная последовательность:
[(-2,), (-1,), (0,), (1,), (2,)] # 1-мерные кортежи
>>> list(zip([1, 2, 3], [2, 3, 4, 5])) # N последовательностей:
[(1, 2), (2, 3), (3, 4)] # N-мерные кортежи
# map передает объединенные элементы последовательностей указанной функции,
# усекая результирующую последовательность
# по длине кратчайшей исходной последовательности
>>> list(map(abs, [-2, -1, 0, 1, 2])) # Единственная последовательность:
[2, 1, 0, 1, 2] # 1-мерная функция
>>> list(map(pow, [1, 2, 3], [2, 3, 4, 5])) # N последовательностей:
[1, 8, 81] # N-мерная функция
Комментариев нет:
Отправить комментарий