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

Python中的filter()函数使用实例

发布时间:2023-06-21 07:02:15

Python中的filter()函数是一种非常有用的工具,可以对一个序列进行筛选,从而得到符合条件的子序列。filter()函数的基本用法是对一个序列进行迭代,将其中每一个元素传入给定的函数,当该函数返回True时,该元素就会被保留,否则被丢弃。

实例1:

我们想筛选出一个列表中所有的偶数,可以使用filter()函数:

def is_even(num):
    return num % 2 == 0

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_nums = list(filter(is_even, nums))
print(even_nums)

运行结果为:

[2, 4, 6, 8]

在这个例子中,我们定义了一个is_even()函数,该函数接受一个参数num,判断num是否为偶数。然后我们使用filter()函数,将is_even()和nums作为参数传入,该函数会对nums中的每一个元素调用is_even()函数,如果返回True,则该元素会被保留在返回的列表中。

实例2:

我们想筛选出一个字符串列表中长度大于3的元素:

words = ['apple', 'banana', 'cat', 'dog', 'elephant']
long_words = list(filter(lambda word: len(word) > 3, words))
print(long_words)

运行结果为:

['apple', 'banana', 'elephant']

在这个例子中,我们使用了lambda表达式,该表达式接受一个参数word,判断word的长度是否大于3。然后我们使用filter()函数,将lambda表达式和words作为参数传入,该函数会对words中的每一个元素调用lambda表达式,如果返回True,则该元素会被保留在返回的列表中。

实例3:

我们想筛选出一个字典中所有value大于等于5的键值对:

scores = {'math': 8, 'english': 7, 'history': 6, 'physics': 3, 'chemistry': 9}
high_scores = dict(filter(lambda item: item[1] >= 5, scores.items()))
print(high_scores)

运行结果为:

{'math': 8, 'english': 7, 'history': 6, 'chemistry': 9}

在这个例子中,我们使用了lambda表达式,该表达式接受一个参数item,判断item的value是否大于等于5。然后我们使用filter()函数,将lambda表达式和scores.items()作为参数传入,该函数会对scores.items()中的每一个键值对调用lambda表达式,如果返回True,则该键值对会被保留在返回的字典中。

总结:

filter()函数是一个非常有用的工具,可以帮助我们快速筛选出符合条件的元素。在使用时,我们需要定义一个函数或lambda表达式来判断元素是否符合条件,并传入序列作为参数。注意,filter()函数返回的结果不是原序列的子序列,而是一个新的列表或字典。