filter(): filter()可以对某个序列做过滤处理, 判断自定义函数的参数返回的结果是否为真来过滤, 并一次性返回处理结果. 例如:
def func(x):
if x > 0:
return x
print(filter(func, range(-4, 5))) # 调用filter()函数, 返回的是filter对象
print(list(filter(func, range(-5, 6)))) # 将filter对象转换为列表
注意: filter()中的过滤函数func()的参数不能为空. 否则,没有可以存储sequence元素的变量, func()也不能过滤.
运行结果:
[1, 2, 3, 4, 5]
2. 对序列中元素的连续操作可以通过循环来处理. reduce()内置函数可以实现连续处理的功能.
例如:
def sum(x, y):
return x + y
from functools import reduce # 引入reduce
print(reduce(sum, range(1, 10)))
print(reduce(sum, range(1, 10), 10))
print(reduce(sum, range(0, 0), 10))
运行结果:
45
55
10
3. map()函数可以对多个序列的每个元素都执行相同的操作, 并返回一个map对象. 例如:
def power(x):
return x ** x
def power2(x, y):
return x ** y
print(map(power2, range(1, 5))) # 打印map对象
print(list(map(power, range(1, 5)))) # 转换为列表输出
print(map(power2, range(1, 5), range(5, -1, 1))) # 打印map对象
print(list(map(power2, range(1, 5), range(5, 1, -1)))) # 转换为列表输出(依次计算1^5, 2^4, 3^3, 4^2)
运行结果:
[1, 4, 27, 256]
[1, 16, 27, 16]
range(33, 3, -1)