欢迎访问宙启技术站
智能推送

如何使用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函数,或我们自己编写的函数作为参数,以满足指定的过滤条件。