说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
itertools.filterfalse() 是 Python itertools 模块中的一个函数,用于过滤可迭代对象中不满足谓词条件的元素,并返回剩余的所有元素。这个内置函数 filter 的逻辑是相反的。
语法为itertools.filterfalse(predicate, iterable)
创建一个迭代器,只返回 iterable 中 predicate 为 False 的元素。如果 predicate 是 None,返回真值测试为 false 的元素。
参数:
大致相当于:
def filterfalse(predicate, iterable):
# filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8
if predicate is None:
predicate = bool
for x in iterable:
if not predicate(x):
yield x
和内置函数 filter 的筛选机制相反,如:
import itertools
foo = itertools.filterfalse(lambda x: x%2==0, [1,3,1,5,6,8,1])
[*foo]
# [1, 3, 1, 5, 1]
返回一个迭代器,包含可迭代对象中不满足谓词条件的所有元素。
import itertools
data = [1, 2, 3, 4, 5, 6, 7, 8]
result = itertools.filterfalse(lambda x: x < 5, data)
print(list(result))
# 输出:
# [5, 6, 7, 8]
import itertools
data = 'abcdefg'
result = itertools.filterfalse(lambda x: x < 'd', data)
print(''.join(result))
# 输出:
# defg
import itertools
data = [1, 3, 5, 7, 2, 4, 6, 8]
result = itertools.filterfalse(lambda x: x % 2 == 1, data)
print(list(result))
# 输出:
# [2, 4, 6, 8]
更新时间:2024-07-03 21:57:00 标签:python 迭代 filter