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
构造迭代器而不是列表。
我们可以使用
mul
操作符代替
my_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]
>>>