Python filter()接收或舍弃数据

  • Post category:Python

当需要从一个序列中筛选出一部分元素时,可以使用filter()函数来进行操作。filter()函数的作用是将一个序列作为输入,并通过一个布尔函数过滤掉一些元素。最终输出过滤后的元素序列。

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

filter(function, iterable)

其中,function是一个函数,表示对传入的每个元素进行判断的条件;iterable是一个可迭代对象,可为列表、元组、集合等。

以下是一个示例,使用filter()函数从列表中筛选出所有的偶数:

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = list(filter(lambda x: x % 2 == 0, my_list))
print(result)  # 输出 [2, 4, 6, 8, 10]

上面的代码中,lambda x: x % 2 == 0表示对传入的x进行求余操作,判断其是否为偶数,是则返回True,否则返回Falsefilter()函数对my_list中的每个元素都进行该判断,将判断结果为True的元素放入结果序列中,最终返回一个列表。

另一个示例是使用filter()函数过滤掉列表中的空字符:

my_list = ['hello', '', 'world', '', '']
result = list(filter(None, my_list))
print(result)  # 输出 ['hello', 'world']

上面的代码中,将None作为function参数传入filter()函数中,表示过滤掉所有False值,包括空字符串、None等,将非False的元素作为结果返回。

在使用filter()函数时,常常会结合lambda函数使用, lambda函数为匿名函数,可以更方便地对元素进行判断和转换。使用filter()函数的注意点是,需要将结果转化成序列,否则返回的是一个filter对象。