filter()函数-根据函数返回值从可迭代对象中过滤元素,返回满足条件的新列表
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()函数都可以非常方便地实现元素的过滤。
