zoukankan      html  css  js  c++  java
  • 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]
    
  • 相关阅读:
    【leetcode】下一个排列
    【leetcode】配对交换
    【leetcode】两个相同字符之间的最长子字符串
    052-126&127
    052-125
    052-124
    052-123
    052-122
    052-121
    052-120
  • 原文地址:https://www.cnblogs.com/azureology/p/12363282.html
Copyright © 2011-2022 走看看