如何使用Python的filter()函数过滤列表项?
发布时间:2023-06-03 13:06:50
Python中的filter()函数是一个内置函数,用于创建一个新的列表,其中只包含原始列表中满足指定条件的元素。这个函数接受两个参数:一个函数和一个序列。它在序列中以迭代的方式应用给定的函数,并返回一个过滤后包含全部元素的新列表,满足给定的函数返回的是True。
filter()函数在Python中的用法比较广泛。下面是一些常见的列表过滤器的用例如下:
1. 过滤出偶数或奇数
# 过滤出偶数 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] even = list(filter(lambda x: x % 2 == 0, numbers)) print(even) # [2, 4, 6, 8] # 过滤出奇数 odd = list(filter(lambda x: x % 2 == 1, numbers)) print(odd) # [1, 3, 5, 7, 9]
在这个例子中,我们使用了Lambda函数,它是一个匿名函数,用于检查给定数字是偶数还是奇数。filter()函数将这个函数应用于numbers列表的所有元素,并返回一个新的列表,其中包含满足条件的元素。
2. 过滤空字符串
# 过滤出非空字符串 names = ['', 'Alice', 'Bob', '', 'Charlie'] filtered_names = list(filter(lambda x: x != '', names)) print(filtered_names) # ['Alice', 'Bob', 'Charlie']
在这个例子中,我们使用了Lambda函数,它检查给定的字符串是否为空。filter()函数将这个函数应用于names列表中的每个元素,并返回一个新的列表,其中包含所有非空的字符串。
3. 过滤大于10的数字
# 过滤出大于10的数字 numbers = [2, 3, 11, 5, 15, 7, 21] filtered_numbers = list(filter(lambda x: x > 10, numbers)) print(filtered_numbers) # [11, 15, 21]
在这个例子中,我们使用了Lambda函数,它检查给定的数字是否大于10。filter()函数将这个函数应用于numbers列表中的每个元素,并返回一个新的列表,其中包含所有大于10的数字。
4. 过滤出Python开发者的名字
# 过滤出Python开发者的名字
developers = [
{'name': 'Alice', 'language': 'Python'},
{'name': 'Bob', 'language': 'Java'},
{'name': 'Charlie', 'language': 'JavaScript'},
{'name': 'Dave', 'language': 'Python'}
]
python_developers = list(filter(lambda x: x['language'] == 'Python', developers))
print(python_developers) # [{'name': 'Alice', 'language': 'Python'}, {'name': 'Dave', 'language': 'Python'}]
在这个例子中,我们使用了Lambda函数,它检查给定的字典中的“language”键的值是否等于“Python”。filter()函数将这个函数应用于developers列表中的每个元素,并返回一个新的列表,其中包含所有使用Python语言的开发者的字典。
总之,filter()函数是一个很有用的Python函数,它可以基于给定的条件过滤列表元素,并为我们提供一个新的过滤后的列表。我们可以使用Lambda函数,或我们自己编写的函数作为参数,以满足指定的过滤条件。
