加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

python3 map、reduce、filter 的区别

发布时间:2021-07-06 05:59:22 所属栏目:大数据 来源: https://blog.csdn.net/yilovex
导读:在 Python 中有一种编程模式叫做函数式编程,使用的就是 map、reduce、filter 这样的高阶函数 map(遍历序列):接收两个参数,一个是函数,一个是? Iterable , map? 将传入的函数依次作用到序列的每个元素,并把结果作为新的? Iterator? 返回 #!/usr/bin/e

在 Python 中有一种编程模式叫做函数式编程,使用的就是 map、reduce、filter 这样的高阶函数

map(遍历序列):接收两个参数,一个是函数,一个是?Iterablemap?将传入的函数依次作用到序列的每个元素,并把结果作为新的?Iterator?返回

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

d1 = map(str,range(10))
print(type(d1))
print(list(d1))

d2 = map(lambda x: x*x,range(1,11))
print(type(d2))
print(list(d2))

运行结果:

Geek-Mac:Downloads zhangyi$ python3 Nice.py 
<class 'map'>
['0','1','2','3','4','5','6','7','8','9']
<class 'map'>
[1,4,9,16,25,36,49,64,81,100]

Geek-Mac:Downloads zhangyi$ python2.7 Nice.py 
<type 'list'>
['0','9']
<type 'list'>
[1,100]

在 Python2 中,map 返回是一个 list,在 Python3 中返回是?iterators,所以想要使用,需要将 iterator 转换成 list 即可

比如 list(map())

?

reduce(累计函数):对于序列内所有元素进行累计操作,这个函数必须接收两个参数,reduce?把结果继续和序列的下一个元素做累积计算

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

from functools import reduce

d = reduce(lambda x,y: x+y,11))
print(d)

运行结果:

Geek-Mac:Downloads zhangyi$ python3 Nice.py 
55

因为在 Python3 中,已经将内置的 移除了,所以使用之前必须先导入标准库 functools 中的 reduce

?

filter(筛选函数):filter?接收一个函数和一个序列,函数依次作用于每个元素,然后根据返回值是?True?还是?False?决定保留还是丢弃该元素

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

d = filter(lambda x: x%2==0,11))
print(list(d))

运行结果:

Geek-Mac:Downloads zhangyi$ python3 Nice.py 
[2,6,8,10]

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读