**Python函数:如何使用filter()函数?**
在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
