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

**Python函数:如何使用filter()函数?**

发布时间:2023-06-13 14:33:42

在Python中,filter()函数是常用的内置函数之一,用于在序列中过滤出符合条件的元素,返回一个迭代器对象。本文将介绍如何使用这个函数。

1. filter()函数的基本语法

filter()函数有两个参数, 个参数是一个函数对象,第二个参数可以是任何可迭代的序列,例如列表、元组、字符串等。该函数会使用 个参数函数来过滤第二个参数序列,并返回一个迭代器对象。

filter(function, iterable)

其中,function参数是用来过滤序列的函数对象,这个函数需要具有以下特点:

- 函数的输入参数是一个元素;

- 函数返回值为True或False。

iterable参数可以是任何可迭代的序列,例如列表、元组、字符串等。

2. 使用示例

接下来,我们通过一些示例来学习如何使用filter()函数。

2.1 过滤出列表中的奇数

假设我们有一个列表,我们要将其中的奇数筛选出来,可以这样实现:

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

在这个示例中,我们使用lambda函数来实现输入参数是一个元素,返回值是True或False的过滤函数,最终得到的b是一个迭代器对象,需要用list()将其转换为列表。

2.2 过滤出字符长度大于等于5的字符串

假设我们有一个字符串列表,我们需要将其中字符长度大于等于5的字符串筛选出来,可以这样实现:

a = ['hello', 'world', 'python', 'function', 'filter']
b = filter(lambda x: len(x)>=5, a)
print(list(b))  # 输出['hello', 'world', 'python', 'function', 'filter']

在这个示例中,我们同样使用lambda函数来实现输入参数是一个字符串,返回值是True或False的过滤函数。

3. 使用注意事项

使用filter()函数时,需要注意以下几个问题:

- 返回值是一个迭代器对象,需要用list()或for循环来进行遍历;

- 如果传入的序列中元素为None或空值,则会被过滤掉;

- 如果 个参数函数未返回True或False,则不会进行过滤。

例如,我们可以将上面的示例修改为这样:

a = ['hello', 'world', 'python', 'function', 'filter', '']
b = filter(lambda x: len(x)>=5, a)
print(list(b))  # 输出['hello', 'world', 'python', 'function', 'filter']

c = filter(lambda x: x, a)
print(list(c))  # 输出['hello', 'world', 'python', 'function', 'filter']

在 个示例中,空字符串被过滤掉了。在第二个示例中,lambda函数返回x,即将其中的空字符串、None等值筛选掉了。

参考资料:

https://www.runoob.com/python/ref-builtin-filter.html

https://www.cnblogs.com/yufeihlf/p/5694548.html

https://www.jianshu.com/p/4fe56b1e71b7