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

filter函数的三个参数

filter函数是在Python中非常常用的函数之一,它可以用于过

滤一个序列中的元素。它的基本语法是:filter(function,

iterable),其中function是一个函数,iterable是一个可迭代对

象。filter函数会遍历iterable中的每个元素,并将其传递给

function中进行判断,如果function返回True,则该元素被保留下

来,否则被过滤掉。

除了这两个常见的参数外,filter函数还有一个可选的参数:

key。key参数是一个函数,它会被应用到iterable中的每个元素上,

用于返回一个用于排序的关键字。在这篇文章中,我们将详细介绍

filter函数的三个参数。

一、function参数

function参数是filter函数中最重要的参数之一,它决定了过

滤条件。function参数可以是一个普通的函数,也可以是一个lambda

表达式。在使用function参数时,需要注意以下几点:

1. function函数必须返回一个布尔值,即True或False。

2. function函数接受一个参数,即iterable中的每个元素。

3. function函数可以是一个普通的函数,也可以是一个lambda

表达式。

下面是一个使用普通函数作为function参数的例子:

```python

def is_even(n):

- 1 -

return n % 2 == 0

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

result = filter(is_even, numbers)

print(list(result)) # [2, 4, 6, 8, 10]

```

在这个例子中,我们定义了一个函数is_even,它的作用是判断

一个数是否为偶数。我们将这个函数作为function参数传递给

filter函数,用于过滤一个列表中的偶数。

下面是一个使用lambda表达式作为function参数的例子:

```python

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

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

print(list(result)) # [2, 4, 6, 8, 10]

```

在这个例子中,我们使用lambda表达式定义了一个函数,它的

作用和is_even函数相同。我们将这个lambda表达式作为function

参数传递给filter函数,用于过滤一个列表中的偶数。

二、iterable参数

iterable参数是filter函数中用于过滤的序列,它可以是一个

列表、元组、字符串、字典等可迭代对象。在使用iterable参数时,

需要注意以下几点:

1. iterable参数必须是一个可迭代对象。

- 2 -

2. iterable参数可以是一个列表、元组、字符串、字典等可迭

代对象。

下面是一个使用列表作为iterable参数的例子:

```python

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

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

print(list(result)) # [2, 4, 6, 8, 10]

```

在这个例子中,我们使用了一个列表作为iterable参数,用于

过滤其中的偶数。

三、key参数

key参数是filter函数中的可选参数,它用于指定一个函数,

该函数会被应用到iterable的每个元素上,用于返回一个用于排序

的关键字。在使用key参数时,需要注意以下几点:

1. key参数必须是一个函数。

2. key函数接受一个参数,即iterable中的每个元素。

3. key函数必须返回一个可以用于排序的关键字。

下面是一个使用key参数的例子:

```python

fruits = ['apple', 'banana', 'cherry', 'date']

result = filter(lambda x: len(x) > 5, fruits)

print(list(result)) # ['banana', 'cherry']

- 3 -

result = filter(lambda x: len(x) > 5, fruits, key=lambda

x: ())

print(list(result)) # ['banana', 'cherry']

```

在这个例子中,我们定义了一个列表fruits,并使用lambda表

达式作为function参数,用于过滤其中长度大于5的元素。在第一

个filter函数中,我们没有使用key参数,因此过滤的是原始的

fruits列表。在第二个filter函数中,我们使用了key参数,并传

递了一个lambda表达式作为key函数,用于将fruits列表中的每个

元素转换为小写字母。由于key函数返回的是一个可以用于排序的关

键字,因此filter函数会根据转换后的小写字母来过滤列表中的元

素。

总结

filter函数是Python中非常常用的函数之一,它可以用于过滤

一个序列中的元素。除了常见的function和iterable参数外,filter

函数还有一个可选的key参数,用于指定一个函数,该函数会被应用

到iterable的每个元素上,用于返回一个用于排序的关键字。在使

用filter函数时,需要注意function、iterable和key参数的用法

和注意事项。

- 4 -