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

利用Python的filter()函数过滤列表的方法

发布时间:2023-06-15 00:38:53

Python中的filter()函数是一个内置函数,可以用于过滤列表、元组或字典等可迭代对象中的元素。filter()函数接受两个参数:一个是函数,另一个是可迭代对象。它会根据函数返回值的True或False来决定是否保留或丢弃可迭代对象中的元素。

filter()函数的基本用法如下:

new_list = filter(function, iterable)

其中,function是自定义的函数,它的返回值必须是True或False;iterable是可迭代对象,如列表、元组、字典等。filter()函数会遍历可迭代对象iterable中的每一个元素,然后将它传递给function函数进行处理。如果function函数返回True,则该元素会被保留在新的列表new_list中;如果返回False,则该元素会被过滤掉。

下面用具体的例子来说明如何使用filter()函数过滤列表:

# 过滤掉列表中的偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_numbers = list(filter(lambda x: x % 2 == 1, numbers))
print(new_numbers)

运行结果为:

[1, 3, 5, 7, 9]

解释:lambda表达式lambda x: x % 2 == 1用来判断x是否为奇数,如果是则返回True,否则返回False。filter()函数会对numbers列表中的每一个元素进行这个判断,如果返回True,则保留该元素;否则过滤掉该元素。最终返回的新列表new_numbers只包含奇数。

再来看一个例子:

# 过滤掉列表中长度小于3的字符串
words = ['apple', 'banana', 'orange', 'grape', 'pear']
new_words = list(filter(lambda x: len(x) >= 3, words))
print(new_words)

运行结果为:

['apple', 'banana', 'orange', 'grape', 'pear']

解释:lambda表达式lambda x: len(x) >= 3用来判断字符串x的长度是否大于等于3,如果是,则返回True,否则返回False。filter()函数会对words列表中的每一个元素进行这个判断,如果返回True,则保留该元素;否则过滤掉该元素。最终返回的新列表new_words只包含长度大于等于3的字符串。

总结:利用Python的filter()函数过滤列表的方法就是将要过滤的规则写成一个函数,并将该函数和要过滤的列表作为参数传递给filter()函数,最终得到一个新的列表,其中只包含符合规则的元素。可以使用lambda表达式来快速定义这个过滤规则函数。