Python的map,readue,filter函数

map()

map(function, iterable, …)

解释:

  1. 第一个参数是一个函数 function ,后面可以跟多个参数
  2. 除了第一个参数,其他参数必须是 iterable
  3. 返回值是一个列表
  4. 该列表中的第i个元素是 function以所有其他参数的的第i个元素组成的参数列表的值

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> map(str, range(5))           # 对range(5)各项进行str操作
['0', '1', '2', '3', '4'] # 返回列表

>>> def add(x,y):return x+y
...
>>> map(add,'zhoujy','Python')
['zP', 'hy', 'ot', 'uh', 'jo', 'yn']

# 想要输入多个序列,需要支持多个参数的函数,注意的是各序列的长度必须一样,否则报错:
>>> def add(x,y):return x+y
...
>>> map(add,'zhoujy','Python')
['zP', 'hy', 'ot', 'uh', 'jo', 'yn']
>>> def add(x,y,z):return x+y+z
...
>>> map(add,'zhoujy','Python','test') #'test'的长度比其他2个小
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add() takes exactly 2 arguments (3 given)

>>> map(add,'zhoujy','Python','testop')
['zPt', 'hye', 'ots', 'uht', 'joo', 'ynp']

reduce()

reduce(function, iterable[, initializer])

解释:

  1. 第一个参数是函数,第二个参数是可迭代的,第三个是可选参数。
  2. 第一个参数必须是只有两个参数的函数。
  3. 如果有第三个参数,则把它当做reduce()计算的初始值。
1
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])  # calculates ((((1+2)+3)+4)+5)

filter()

filter(function, iterable)

解释:

  1. 第一个的参数是一个函数,第二个参数是可迭代的
  2. 以iteable的元素为参数依次执行function(),将结果 =True 的元素组成列表返回,=False 则过滤。

代码:

1
2
>>> filter(lambda x : x%2,range(10))        #lambda 函数返回奇数,返回列表
[1, 3, 5, 7, 9]