python 中 filter() 函数的用法和示例
在 Python 编程中,filter() 是一个内置函数,该函数用于筛选序列中特定条件满足的元素。此函数返回一个迭代器对象,该对象包含了原序列中满足条件的元素。可以在序列中应用自定义的函数或 lambda 函数,该函数返回一个 True 或 False 值,并根据函数的返回值或条件筛选序列的元素。下面是 filter() 函数的用法和示例。
filter() 函数的语法
filter() 函数的语法如下所示:
filter(function, iterable)
参数解释:
- function:自定义函数或 lambda 函数,用于筛选序列中的元素。
- iterable:可迭代对象,可以是列表、元组、集合或字典。
filter() 函数的返回值
filter() 函数返回一个迭代器对象,该对象包含了原序列中所有满足条件的元素。可以使用 list() 函数将迭代器对象转换为列表。
示例代码如下:
# 定义一个列表
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 自定义函数,用于筛选偶数
def is_even(n):
return n % 2 == 0
# 使用 filter() 函数筛选偶数
result = filter(is_even, my_list)
# 输出结果
print(list(result)) # [2, 4, 6, 8]
在上面的代码中,定义了一个自定义函数 is_even(),用于判断一个数是否是偶数。然后使用 filter() 函数将列表中的元素传入函数中进行筛选,返回一个迭代器对象,最后使用 list() 函数将迭代器对象转换为列表。
filter() 函数也可以使用 lambda 函数代替自定义函数,例如:
# 使用 lambda 函数筛选偶数 result = filter(lambda x: x % 2 == 0, my_list) # 输出结果 print(list(result)) # [2, 4, 6, 8]
filter() 函数的示例
下面是更多使用 filter() 函数的示例。
1. 筛选长度大于等于 5 的字符串
# 定义一个字符串列表 my_list = ['hello', 'world', 'python', 'filter', 'lambda'] # 筛选长度大于等于 5 的字符串 result = filter(lambda x: len(x) >= 5, my_list) # 输出结果 print(list(result)) # ['hello', 'world', 'python', 'filter']
2. 筛选元组中 个元素为偶数的元素
# 定义一个元组列表 my_list = [(1, 2), (2, 3), (4, 5), (3, 4), (6, 7)] # 筛选元组中 个元素为偶数的元素 result = filter(lambda x: x[0] % 2 == 0, my_list) # 输出结果 print(list(result)) # [(2, 3), (4, 5), (6, 7)]
3. 筛选字典中值大于等于 80 的元素
# 定义一个字典
my_dict = {'English': 85, 'Math': 90, 'Python': 78, 'History': 80, 'Science': 95}
# 筛选字典中值大于等于 80 的元素
result = filter(lambda x: x[1] >= 80, my_dict.items())
# 输出结果
print(dict(result)) # {'English': 85, 'Math': 90, 'History': 80, 'Science': 95}
总结
filter() 函数是一个非常有用的内置函数,在 Python 编程中可以用于筛选序列中满足特定条件的元素。使用自定义函数或 lambda 函数可以为 filter() 函数指定筛选条件,并返回一个迭代器对象,该对象包含了原序列中满足条件的元素。filter() 函数可以用于列表、元组、集合、字典等可迭代对象。
