python教程: filter()和reduce()函数用法详解

世上唯一不能复制的是时间,唯一不能重演的是人生,唯一不劳而获的是年龄。该怎么走,过什么样的生活,全凭自己的选择和努力。人生很贵,请别浪费!与智者为伍,与良善者同行。python教程: filter()和reduce()函数用法详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、filter() 

在Python内建函数中,有一个和map()函数用法类似、却可以用来过滤元素的迭代函数,这个函数就是filter()。它的函数原型是:filter(function,itearable)

filter返回的是一个filter对象,可以通过list()或者for循环取出内容。 注意:传入的函数返回值必须是布尔类型。若是真则保留元素,假则过滤掉这元素

def is_even(x):
    return x%2==0
a=filter(is_even,[1,2,3,4,5,6])
print(a) 
#<filter object at 0x017FCF30>
print(list(a))
#[2, 4, 6]

下面在举个例子,体会一下发filter()的的用法。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#过滤列表中的元素

def is_empty(s):
    return s.strip()!=''
print(list(filter(is_empty,['','\n','\t','aa'])))  #['aa']

二、reduce()

reduce()函数原型是reduce(function,sequence),它的作用是用function对序列进行累积操作。它返回值可以直接输出,不像map和filter返回的是一个迭代对象,还得去转化。

所谓的累计操作就是就是第 1、2 个元素用 function 函数运算,得到的结果再与第三个数据用 function 函数运算,然后得到的结果再与第四个进行运算,一次类推。

下面通过一个具体的例子来说明所谓的累计操作是怎么样的。

注:reduce函数是存放再functiontools模块中的,使用前要导入

#函数功能是实现阶乘
from functools import reduce  #导入reduce
print(reduce(lambda x,y:x*y,[1,2,3,4])
#输出是24

整个过程如下:
1、操作第1,2个元素,即1 * 2 得到2
2、操作1的结果和第3个元素,即 2 * 3 得到6
3、操做2的结果和第4个元素,即 6 * 4 得到24
4、返回24

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/213675.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!