2024年3月20日发(作者:)

python中filter的用法

filter函数是Python内置的一个高阶函数,主要用于对序列进行过

滤操作。它接收两个参数,第一个参数是一个函数,第二个参数是一个序

列(如列表、元组等),然后根据传入的函数对序列中的元素进行筛选,

返回一个迭代器对象(Iterator)或可迭代对象(Iterable)。

filter函数的语法如下:

filter(function, sequence)

其中,function是一个用于筛选元素的函数,它接收一个参数,并

返回一个布尔值。如果返回True,表示保留该元素;如果返回False,表

示过滤掉该元素。sequence是需要过滤的序列,可以是列表、元组等。

下面是一些filter函数的使用示例:

示例1:筛选出列表中的偶数

```python

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = filter(lambda x: x % 2 == 0, nums)

print(list(result))

#输出:[2,4,6,8,10]

```

在上面的示例中,使用filter函数和lambda表达式来筛选出列表

nums中的偶数,得到一个包含偶数的迭代器对象result。最后使用

list(函数将迭代器对象转换为列表并打印。

示例2:筛选出元组中小于等于10的数

```python

def less_than_10(x):

return x <= 10

nums = (1, 3, 5, 7, 9, 11, 13)

result = filter(less_than_10, nums)

print(tuple(result))

#输出:(1,3,5,7,9)

```

在上面的示例中,使用一个函数less_than_10来判断元素是否小于

等于10。然后使用filter函数对元组nums进行筛选,得到一个包含小

于等于10的元素的迭代器对象result。最后使用tuple(函数将迭代器对

象转换为元组并打印。

示例3:筛选出字符串列表中长度大于3的字符串

```python

words = ['apple', 'orange', 'banana', 'peach']

result = filter(lambda x: len(x) > 3, words)

print(list(result))

# 输出:['apple', 'orange', 'banana', 'peach']

```

在上面的示例中,使用lambda表达式来筛选出字符串列表words中

长度大于3的字符串,得到一个包含满足条件的字符串的迭代器对象

result。最后使用list(函数将迭代器对象转换为列表并打印。

注意事项:

1. filter函数返回的是一个迭代器对象或可迭代对象,如果想得到

列表等其他类型的数据,需要使用list(、tuple(等函数进行转换。

2. filter函数内可以使用函数、lambda表达式等来进行条件判断,

根据具体需求来选择。

总结:

filter函数是Python中非常常用的一个函数,它可以根据条件对序

列进行筛选,返回一个符合条件的新序列。通过对函数、lambda表达式

的灵活运用,可以实现各种复杂的筛选需求。掌握filter函数的用法,

能够提高代码的灵活性和开发效率。