Python中的filter()函数:筛选符合条件的列表元素
在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()函数将返回的迭代器转换为列表才能输出。
