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

介绍

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','天气']
>>> o = []
>>> for x in i:
	try:
		o.append(int(x))
	except:
		pass

>>> o
[1, 17]
原文地址:https://www.cnblogs.com/azureology/p/12363282.html