Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/python-builtin-functions-filter.html

python 用于对可迭代对象进行过滤的内置函数 filter 详解

Python 内置函数 Python 内置函数


filter 是 Python 内置函数之一,用于从一个可迭代对象中过滤出满足指定条件的元素,并返回一个由满足条件的元素组成的迭代器(iterator)。

函数语法

filter(function, iterable)

参数:

  • function: 这是一个用于判断每个元素是否满足条件的函数。它接受一个参数,即可迭代对象中的每个元素,并应返回一个布尔值(TrueFalse ),表示该元素是否应该被保留。如果传入 None,则默认过滤掉所有被视为假值的元素。
  • iterable : 这是要过滤的可迭代对象,如列表、元组、集合等。

示例代码

以下是一些示例代码来说明 filter 函数的用法:

示例 1: 过滤偶数

def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = filter(is_even, numbers)
even_numbers = list(filtered_numbers)

print(even_numbers)

运行结果:

[2, 4, 6, 8, 10]

示例 2: 过滤长度大于等于 5 的字符串

def is_long_enough(s):
    return len(s) >= 5

words = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
filtered_words = filter(is_long_enough, words)
long_words = list(filtered_words)

print(long_words)

运行结果:

['banana', 'cherry', 'elderberry']

示例 3: 过滤非空元素

data = [0, '', None, False, 42, 'hello', [], True]
filtered_data = filter(None, data)
non_empty_values = list(filtered_data)

print(non_empty_values)

运行结果:

[42, 'hello', True]

示例 4: 使用 lambda 函数进行过滤

numbers = [15, 25, 30, 45, 50, 65]
filtered_numbers = filter(lambda x: x > 30, numbers)
selected_numbers = list(filtered_numbers)

print(selected_numbers)

运行结果:

[45, 50, 65]

总结

filter 函数是一个强大的工具,可以用于从可迭代对象中快速过滤出满足指定条件的元素。你可以传入自定义的函数或使用 lambda 函数来指定过滤条件。记住,filter 返回一个迭代器,所以需要将其转换为列表或其他类型的可迭代对象,以便查看结果。

函数语法sorted(iterable,key=None,reverse=False)参数:iterable:可迭代对象,如列表、元组、字符 ...
10中引入了一个新的内置函数aiter(),它用于获取可迭代对象的异步迭代器对象。run(main())运行结果:012使用sentinel ...
frozenset是Python内置函数之一,用于将可迭代对象转换为不可变的集合类型(frozenset)。与普通的集合不同,不可变集合一旦 ...
anext() 是Python的内置函数之一,用于获取可迭代对象(iterable)中的下一个元素。函数语法anext(iterator)参 ...
list()是Python中的一个内置函数,用于将可迭代对象(如列表、元组、字符串等)转换为一个新的列表对象。函数语法list(iterab ...