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

filter()函数-根据函数返回值从可迭代对象中过滤元素,返回满足条件的新列表

发布时间:2023-06-18 22:05:58

filter()函数是Python内置函数之一,用于对可迭代对象中的元素进行筛选,返回符合指定条件的新列表。filter()函数需要两个参数:一个是函数对象,用来对可迭代对象中的每个元素进行判断;另外一个是可迭代对象,它可以是列表、元组、集合或字典等。

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

filter(funtion, iterable)

其中,function表示用于判断可迭代对象中每个元素是否符合指定条件的函数,iterable表示可迭代对象。

filter()函数的返回值是一个新的列表对象,里面包含了原可迭代对象中所有符合条件的元素。在Python 3.x版本中,返回值是一个filter对象,需要通过list()函数将其转换为列表。如果可迭代对象中没有符合条件的元素,则返回空列表。

下面是一个示例代码,用来对列表中的元素进行过滤,只留下偶数元素:

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

输出结果为:

[2, 4, 6, 8, 10]

上述代码中,使用了lambda表达式来定义用于判断元素的函数。lambda表达式是Python的一种匿名函数,可以直接在函数调用时定义,无需提前声明。lambda表达式的语法如下:

lambda 参数列表 : 表达式

参数列表表示匿名函数接收的参数,多个参数之间用逗号隔开;表达式表示匿名函数的返回值。在上面的示例代码中,使用了lambda表达式 lambda x: x % 2 == 0 来判断元素是否为偶数。该表达式接收一个参数x,通过取模运算判断其是否为偶数,返回True或False。

除了使用lambda表达式,还可以定义一个普通的函数来作为filter()函数的第一个参数。下面是一个示例代码,用来对字符串列表中的元素进行过滤,只留下长度大于5的元素:

words = ['apple', 'banana', 'orange', 'grape', 'pear']
long_words = list(filter(lambda x: len(x) > 5, words))
print(long_words)

输出结果为:

['banana', 'orange']

上述代码中,定义了一个判断函数 is_long_word(),用于判断字符串长度是否大于5。在filter()函数中,该函数被传递为第一个参数,用来判断可迭代对象中每个元素是否符合条件。

总之,filter()函数是Python中非常实用的函数之一,可以帮助我们轻松地从可迭代对象中筛选出符合条件的元素,并返回一个新的列表。无论是通过lambda表达式还是普通函数来定义判断条件,filter()函数都可以非常方便地实现元素的过滤。