map
Функция может быть очень полезна здесь. Используя map
мы можем применить любую функцию к каждому элементу итерируемого.
Python 3.x
>>> def my_mul(x,y):
... return x*y
...
>>> a = [1,2,3,4]
>>> b = [2,3,4,5]
>>>
>>> list(map(my_mul,a,b))
[2, 6, 12, 20]
>>>
Конечно:
map(f, iterable)
эквивалентно
[f(x) for x in iterable]
Таким образом, мы можем получить наше решение через:
>>> [my_mul(x,y) for x, y in zip(a,b)]
[2, 6, 12, 20]
>>>
В Python 2.x это map()
означает: применять функцию к каждому элементу итерируемого и создавать новый список. В Python 3.x создавайте map
итераторы вместо списков.
Вместо того, чтобы my_mul
мы могли использовать mul
оператор
Python 2.7
>>>from operator import mul # import mul operator
>>>a = [1,2,3,4]
>>>b = [2,3,4,5]
>>>map(mul,a,b)
[2, 6, 12, 20]
>>>
Python 3.5+
>>> from operator import mul
>>> a = [1,2,3,4]
>>> b = [2,3,4,5]
>>> [*map(mul,a,b)]
[2, 6, 12, 20]
>>>
Обратите внимание, что, поскольку map()
конструирует итератор, мы используем *
итеративный оператор распаковки, чтобы получить список. Подход распаковки немного быстрее, чем list
конструктор:
>>> list(map(mul,a,b))
[2, 6, 12, 20]
>>>