博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python2 filter() map() reduce()函数基础
阅读量:4171 次
发布时间:2019-05-26

本文共 1584 字,大约阅读时间需要 5 分钟。

在上一篇博客(python lambda函数基础,网址:http://blog.csdn.net/sxingming/article/details/51296284 )中,我们学习了lambda函数的使用。

本文,在使用lambda函数的基础上,我们学习在python2中,filter( )   map( )   reduce( )三个函数的使用。

1》filter( )函数

filter( )函数会对指定序列执行过滤操作。定义如下:

filter(boolFunction,sequence):此函数的功能相当于过滤器。调用一个布尔函数boolFunction来迭代遍历每个sequence中的元素;返回一个能够使boolFunction函数返回值为true的元素的序列。
例子:
>>> filter(lambda x:x%2==1,[1,2,3,4,5,6])
[1, 3, 5]
>>> filter(lambda x:x>10,[2,4,6,7,8,10,11,14,18])
[11, 14, 18]

2》map( )函数

map( )函数会根据提供的函数对指定序列做映射。map函数定义如下:

map(function,sequence1[,sequence2...])
例子:
>>> map(lambda x:None,[1,2,3,4])
[None, None, None, None]
>>> map(lambda x:x*2,[1,2,3,4])
[2, 4, 6, 8]
>>> map(lambda x:x*2,[1,2,3,[4,5,6]])
[2, 4, 6, [4, 5, 6, 4, 5, 6]]
参数存在多个序列时,会依次以每个序列中相同位置的元素做参数调用function函数。要注意function函数的参数数量,要和map中提供的集合数量相匹配。比如:
>>> map(lambda x,y:x+y,[1,2,3,4,5,6],[4,5,6,7,8,9])
[5, 7, 9, 11, 13, 15]
map返回的list中第一个元素为,参数序列1的第一个元素加参数序列2中的第一个元素(1 + 4),
list中的第二个元素为,参数序列1中的第二个元素加参数序列2中的第二个元素(2+ 5),
依次类推,最后的返回结果为:
[5, 7, 9, 11, 13, 15]
>>> map(lambda x,y:(x,y),[1,2,3,4],[1,2,3,4])
[(1, 1), (2, 2), (3, 3), (4, 4)]
当函数为None时,返回由元组构成的列表,效果等同于上一条,如下:
>>> map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

3》reduce( )函数

reduce( )函数会对参数序列中元素进行迭代操作。定义如下:

reduce(function,sequence[,init]):function为二元函数,将function作用于sequence序列的元素,每次携带一对(先前的结果以及序列中下一个元素),连续的将现有的结果和序列中下一个值代入function函数中,最后得到一个单一的返回值。

如果初始值init给定,则第一次操作取init的值和序列中第一个元素。如果init没有给定,则第一次操作取序列中的前2个元素

例子:

>>> reduce(lambda x,y:x+y,[1,2,3,4,5]) # init没有给定初始值
15
>>> reduce(lambda x,y:x+y,[1,2,3,4,5],10) # init给定初始值
25

(完)

你可能感兴趣的文章
Java核心技术 卷I 基础知识 学习笔记(3)
查看>>
TCP-IP详解卷1:协议 学习笔记(6) Ping
查看>>
Java核心技术 卷I 基础知识 学习笔记(4)
查看>>
Java核心技术 卷I 基础知识 学习笔记(5)
查看>>
Java核心技术 卷I 基础知识 学习笔记(6)
查看>>
微服务架构与实践 学习笔记(1)
查看>>
Java核心技术 卷I 基础知识 学习笔记(7)
查看>>
IDEA使用之让maven项目自动依赖jar包
查看>>
Java核心技术 卷I 基础知识 学习笔记(8)
查看>>
Java核心技术 卷I 基础知识 学习笔记(9)
查看>>
Intellij IDEA 创建资源文件夹 source folder
查看>>
Java核心技术卷2 高级特性 学习笔记(1)
查看>>
Java核心技术卷2 高级特性 学习笔记(4)
查看>>
最大乘积
查看>>
最长公共子串
查看>>
codeforces831c 思维
查看>>
CodeForces - 785C Anton and Fairy Tale
查看>>
CodeForces - 831D Office Keys
查看>>
hdu 1258 确定比赛名次
查看>>
hdu 3342 拓扑,是否存在环
查看>>