Python3.5-内建函数filter的理解应用

Python3.5-内建函数filter的理解应用

望共同进步

转载请注明地址:http://blog.csdn.net/weixin_39701039/article/details/79558279

Python 内建函数filter()属于过滤序列,其接收一个函数和一个序列(filter(function,iterable)),filter()把

传入的函数一次作用于每个元素,然后根据返回值Ture和False决定保留还是丢弃,即实现了过滤功能:

例1.在一个list中,保留3的倍数的数:

#coding:utf-8
#python3.5.1

list1 = [1,2,3,4,5,6,7,8,9,10,11]

#定义函数,如果是3的倍数,返回True;反之,返回False
def is_triple(n):
    return n%3 ==0
#filter()传入function,序列
get = filter(is_triple,list1)
#注意到filter()函数返回的是一个Iterator(迭代器),迭代器为一个惰性序列,所以用list()来强迫其完成计算结果
list_get = list(get)
print(list_get)
#结果:
[3, 6, 9]

例2:之前在我的博客Python3.5 处理文本txt,删除不需要的行 http://blog.csdn.net/weixin_39701039/article/details/79550067  判断一系列,然后在将需要的结果累加,再写入到文件中,显得有些麻烦,突然看到一个来自“好奇的大白”的评论发现用filter来处理就简单的多了

这里我把代码进行处理加了下注释:

#coding:utf-8
#python3.5.1


def func(line):
    #排除空行
    if not line.rstrip():
        return False
    else:
        #根据规则分割得到字符串
        str_get = line.split(',')[-1]
        #将字符串转换为数字
        num = float(str_get)

        if 12.500 > num > 9.500:
            return True

with open(r"G:\任务20180312\test/filter.txt", 'w') as f:
    f.writelines(list(filter(func, open(r'G:\任务20180312\test/handle1.txt'))))



图1,是处理前的txt,图二是处理后的txt

图1:


图2:



望有所帮助,望采纳!!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值