Python3中的filter、map、reduce学习与介绍
用法介绍
filter功能、用法介绍
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的迭代器对象。
该接收两个参数,第一个为判别函数,第二个为可迭代序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
1、filter的语法
filter(function, iterable)
"""
function: 判别函数
iterable:可迭代序列
"""
2、举例介绍
测试例子如下:
print(filter(lambda x: x > 2, range(5)))
print('-'*50)
#例1
print('例1输出结果为:')
for i in filter(lambda x: x > 2, range(5)):
print(i)
print('-'*50)
#例2
def fun(x):
return x>2
filter_ = list(filter(fun, range(5)))
print('例2输出结果为:')
print(filter_)
输出结果为:
<filter object at 0x000000000975C160>
--------------------------------------------------
例1输出结果为:
3
4
--------------------------------------------------
例2输出结果为:
[3, 4]
从上面结果可以看出,filter输出的结果为迭代器对象,我们可以遍历它,也能直接把它转化为list.
map功能、用法介绍
map() 函数用于映射序列,将可迭代序列做对应的映射处理,返回迭代器对象。
该接收两个参数,第一个为映射函数,第二个及以后的为可迭代序列,各序列的每个元素分别作为参数传递给函数进行计算,最后返回计算结果。
1、map的语法
map(function, iterable1, iterable2,...)
"""
function: 映射函数
iterable:可迭代序列
"""
2、举例介绍
测试例子如下:
print(map(lambda x: x + 2, range(5)))
print('-'*50)
#例1
print('例1输出结果为:')
add2 = list(map(lambda x,y: x + y, [1,2,3],[1,2,3,4]))
print(add2)
print('-'*50)
#例2
def fun(x,y,z):
return x+y+z
add3 = list(map(fun, [1,2,3],[1,2,3],[1,2,3]))
print('例2输出结果为:')
print(add3)
输出结果为:
<map object at 0x00000000097C6A90>
--------------------------------------------------
例1输出结果为:
[2, 4, 6]
--------------------------------------------------
例2输出结果为:
[3, 6, 9]
reduce功能、用法介绍
reduce() 函数用于处理序列,将可迭代序列中的元素进行计算,返回迭代器对象。
该接收两个参数,第一个为处理函数,第二个为可迭代序列,依次将序列的每个元素分别作为参数传递给函数进行计算,最后返回计算结果。
1、reduce的语法
reduce(function, iterable1, initial=None))
"""
function: 处理函数
iterable: 可迭代序列
initial: 为初始值
"""
2、举例介绍
测试例子如下:
#例1
from functools import reduce
print('例1输出结果为:')
add1 = reduce(lambda x,y: x + y, [1,2,3,4,5])
print(add1)
print('-'*50)
#例2
def fun(x,y):
return x+y
add2 = reduce(fun, [1,2,3,4,5],5)
print('例2输出结果为:')
print(add2)
输出结果为:
例1输出结果为:
15
--------------------------------------------------
例2输出结果为:
20
注意map和reduce的区别,map将可迭代对象中的元素依次映射为新的元素;reduce将可迭代对象中的元素循环计算,得出结果。reduce(fun, [1,2,3,4,5])
相当于1+2+3+4+5