Python内置filter()函数的深入说明及特定使用

使用filter函数的原则:

1、在编程中,应当优先使用生成式(推导式)去完成列表筛选工作

2、仅当生成式(推导式)过于复杂或难以阅读时,才使用filter(比如需要处理异常)

3、网上关于使用lambda函数来创建可调用对象作为filter的参数,以及其它一些方法,均不推荐使用,这些方法还不如直接使用生成式(推导式)

一、官方定义

filter(functioniterable)

1、filter函数构建了一个迭代器

(1)该迭代器使用【传入的function函数】对【传入的可迭代对象】进行判断,并返回True或者False

(2)该迭代器包含了返回值为True的那些元素

简单说:使用function提供筛选条件,对传入的可迭代对象进行判断,把不符合条件的对象去掉。

2、function可以为None

当为None时,使用可迭代对象本身进行True或者False的判断

【注意,必须要写None,不能省略】

例如:

print(list(filter([0, 1, 0, 2, 3])))

# 没有输入None,编译时,报异常:
# TypeError: filter expected 2 arguments, got 1

print(list(filter(None,[0, 1, 0, 2, 3])))
# 返回:[1, 2, 3]

3、filter(functioniterable)完全等价于生成器表达式

(item for item in iterable if function(item)) if function is not None and (item for item in iterable if item) if function is None.

二、在筛选条件中,处理异常,需要用到filter()

以下例子源自(python算法详解,张玲玲)

ls = ['1', '2', '-3', '-', '4', 'N/A', '5']
def value_int(val):
 try:
       x = int(val)
       return True
 except ValueError:
       return False
ls_after = list(filter(value_int, ls))
print(ls_after)

官方文档地址(英文):Built-in Functions — Python 3.12.2 documentation

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值