码迷,mamicode.com
首页 > 编程语言 > 详细

Python之filter()函数与替代实现

时间:2020-02-25 19:50:43      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:两种方法   正则表达式   接受   过滤   exce   对象   列表   字符串   例子   

介绍

filter(f,x)函数用于过滤序列并返回迭代器,结果保留x中f为True的元素,需要新的序列通过list()转换。

例子

过滤列表中的字符串,保留数字。

>>> i = ['hey','1','532nm','17','天气']
>>> f = lambda x: x.isdigit()
>>> o = filter(f,i)
>>> list(o)
['1', '17']

拓展

Python中str对象有isdigit()和isnumeric()两种方法判别是否为数字。
其中isdigit()仅接受0-9的十进制数,而isnumeric()接收0-9以及数字符号。

>>> '77'.isdigit()
True
>>> '77'.isnumeric()
True
>>> '?'.isdigit()
False
>>> '?'.isnumeric()
True

替代

容易想到,还可通过正则表达式进行过滤。
这里巧妙使用try/except规避正则表达式。

>>> i = ['hey','1','532nm','17','天气']
>>> for x in i:
    try:
        o.append(int(x))
    except:
        pass

>>> o
[1, 17]

Python之filter()函数与替代实现

标签:两种方法   正则表达式   接受   过滤   exce   对象   列表   字符串   例子   

原文地址:https://www.cnblogs.com/azureology/p/12363282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!