map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回。
In [9]: a=[1]*10
In [10]: a
Out[10]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
In [11]: def my_double(x):
...: return 2*x
...:
In [12]: map(my_double, a)
Out[12]: <map at 0x281d5a99d30>
In [13]: list(map(my_double, a))
Out[13]: [2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
reduce
把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
In [16]: from functools import reduce
In [10]: a
Out[10]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
In [14]: def my_sum(x,y):
...: return x+y
...:
In [18]: reduce(my_sum, a)
Out[18]: 10
In [19]: a='wqeqeqweqweqeqweqwe'
In [20]: b='wqeqeqweqwreqeqweqwe'
In [21]: c=list(map(ord,a+b))
In [22]: c
Out[22]:
[119,
113,
101,
113,
101,
113,
119,
101,
113,
119,
101,
113,
101,
113,
119,
101,
113,
119,
101,
119,
113,
101,
113,
101,
113,
119,
101,
113,
119,
114,
101,
113,
101,
113,
119,
101,
113,
119,
101]
In [23]: import operator
In [24]: reduce(operator.xor, c)
Out[24]: 114
In [25]: chr(114)
Out[25]: 'r'