利用Python的Filter函数进行过滤操作
Python中的filter函数是一个内置函数,它可以用于过滤一个序列,并返回一个经过过滤后的新序列。这个函数的原型如下:
filter(function, iterable)
其中function是一个自定义函数,用于对iterable的每个元素进行过滤操作。filter函数会对iterable序列中的每一个元素都调用function函数,如果function返回True,则这个元素会被保留在一个新的序列中,否则这个元素会被过滤掉。最终,filter函数会返回这个新序列。
下面是一些使用filter函数的示例:
### 示例1
假设我们有一个数字列表,我们想要过滤掉所有小于等于5的数字。我们可以使用filter函数来完成这个任务:
nums = [2, 7, 4, 9, 3, 6, 1, 8, 5] filtered_nums = list(filter(lambda x: x > 5, nums)) print(filtered_nums)
输出:
[7, 9, 6, 8]
这里我们传递了一个lambda函数,它用于判断一个数字是否大于5。filter函数会对nums中的每一个数字都调用这个lambda函数,最终返回一个新的filtered_nums序列,其中只包含大于5的数字。
### 示例2
假设我们有一个字符串列表,我们想要过滤掉所有长度小于等于3的字符串。我们可以使用filter函数来完成这个任务:
words = ['cat', 'dog', 'elephant', 'bird', 'pig', 'rat'] filtered_words = list(filter(lambda x: len(x) > 3, words)) print(filtered_words)
输出:
['elephant']
这里我们传递了一个lambda函数,它用于判断一个字符串的长度是否大于3。filter函数会对words中的每一个字符串都调用这个lambda函数,最终返回一个新的filtered_words序列,其中只包含长度大于3的字符串。
### 示例3
假设我们有一个字典列表,每个字典表示一个人的信息,包含'name'和'age'两个键值对。我们想要过滤掉所有年龄小于等于30岁的人。我们可以使用filter函数来完成这个任务:
people = [
{'name': 'Alice', 'age': 28},
{'name': 'Bob', 'age': 35},
{'name': 'Charlie', 'age': 22},
{'name': 'Dave', 'age': 29},
{'name': 'Eve', 'age': 31}
]
filtered_people = list(filter(lambda x: x['age'] > 30, people))
print(filtered_people)
输出:
[{'name': 'Bob', 'age': 35}]
这里我们传递了一个lambda函数,它用于判断一个字典的年龄是否大于30。filter函数会对people中的每一个字典都调用这个lambda函数,最终返回一个新的filtered_people序列,其中只包含年龄大于30的人的字典。
总结:
filter函数可以用于对一个序列进行过滤操作,通过传递一个自定义函数,对序列中的每一个元素进行判断,返回一个新的序列。filter函数的调用方式非常简单,只需要传递一个函数和一个序列即可。利用filter函数可以非常方便地进行过滤操作,减少冗余代码的编写,提高代码的可读性和可维护性。
