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

Python中的filter()函数:筛选符合条件的列表元素

发布时间:2023-06-17 23:34:24

在Python编程中,filter()函数是一个内置函数,它通常用于筛选符合条件的列表元素。

filter()函数的作用是从序列中过滤掉元素,返回一个由所有符合条件的元素所构成的列表。它接受的第一个参数是一个函数,函数的作用是对序列中的每个元素进行判断,返回值为True或False。第二个参数是待过滤的序列,可以是列表、元组、集合、字典等。

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

filter(function, iterable)

其中,function是一个判断函数,iterable是一个可迭代对象。

接下来,我们通过几个示例来详细说明filter()函数的使用方法:

示例一

假设我们需要从一个列表中筛选出所有的偶数,代码如下:

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
new_lst = list(filter(lambda x: x%2==0, lst))
print(new_lst)

运行结果输出为:

[2, 4, 6, 8, 10]

在这个例子中,我们给filter()函数传入了一个lambda函数,这个函数的作用是判断列表中的每个元素是否为偶数,如果是则返回True,否则返回False。通过运行结果我们可以看出,过滤后得到了一个新的列表,其中只包含偶数元素。

示例二

过滤掉数组中的空字符串。代码如下:

lst = ['', 'hello', 'world', '', 'python', '']
new_lst = list(filter(lambda x: x!='', lst))
print(new_lst)

运行结果输出为:

['hello', 'world', 'python']

在这个例子中,我们给filter()函数传入了一个lambda函数,这个函数的作用是判断列表中的每个元素是否为空字符串,如果不是则返回True,否则返回False。通过运行结果我们可以看出,过滤后得到了一个新的列表,其中只包含非空字符串元素。

示例三

过滤出字典中值大于等于50的键值对。代码如下:

my_dict = {'apple': 25, 'banana': 45, 'orange': 60, 'kiwi': 30}
new_dict = dict(filter(lambda x: x[1]>=50, my_dict.items()))
print(new_dict)

运行结果输出为:

{'orange': 60}

在这个例子中,我们给filter()函数传入了一个lambda函数,这个函数的作用是判断字典中每个键值对的值是否大于等于50,如果是则返回True,否则返回False。注意到我们在最终构造新字典时又使用了dict()函数,这是因为filter()函数返回的是一个迭代器,需要转换为字典才能被直接输出。

总结

filter()函数是一个非常实用的工具,在我们需要筛选出符合特定条件的元素时非常方便。在使用过程中,我们需要给函数传入一个判断条件的函数,这个函数需要能够正确地判断每个元素是否符合要求。使用filter()函数的代码很简单,注意要通过list()函数将返回的迭代器转换为列表才能输出。