前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中的filter/map/reduce/zip 内置高阶函数

python中的filter/map/reduce/zip 内置高阶函数

作者头像
生信编程日常
发布2020-04-01 16:19:56
4610
发布2020-04-01 16:19:56
举报

1.map(func, *iterables) map接受两个参数,第一个是函数,第二个是可迭代对象。

代码语言:javascript
复制
test = [1,2,3,4.5]
list(map(lambda x:x*2, test))  # 此处自己定义函数也可以,不一定是匿名函数

返回: [1, 4, 9, 20.25]

2.filter(function or None, iterable) filter可以筛选数据,第一个function是筛选条件,第二个是可迭代对象。

代码语言:javascript
复制
def is_odd(n):
    return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])) # 筛选奇数

返回: [1, 5, 9, 15]

3.reduce(function, sequence[, initial]) reduce()可以将第二个参数sequence中的数据一个一个的进行function的操作。比如先处理第一个和第二个数值,然后再处理这两个的结果和第三个数,直到最后。 reduce()函数在python3版本中的全局命名空间已经被移除了,可以导入functools来使用。

代码语言:javascript
复制
from functools import reduce
reduce(lambda x, y : (x+1)*y, [1,2,3,5])

返回:80. 即((((1+1) * 2 ) + 1 ) * 3 + 1) * 5 = 80.

4.zip(iter1 [,iter2 [...]]) zip()可以将可迭代对象打包成对应的元组形式,如下:

代码语言:javascript
复制
L1 = ['one', 'two']
L2 = [1, 2]
list(zip(L1, L2))
dict(zip(L1, L2))

可返回:[('one', 1), ('two', 2)]和{'one': 1, 'two': 2}

当两个列表不等长时:

代码语言:javascript
复制
L1 = ['one', 'two', 'other']
L2 = [1, 2, 3]
list(zip(L1, L2))
dict(zip(L1, L2))

返回: [('one', 1), ('two', 2)]和{'one': 1, 'two': 2} 与短的长度一致。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档