千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > python里filter函数的用法

python里filter函数的用法

来源:千锋教育
发布人:xqq
时间: 2024-03-13 05:13:02 1710277982

Python中的filter函数是一种非常强大的函数,它可以让我们轻松地对一个可迭代对象进行过滤。filter函数的基本语法如下:

_x000D_

`python

_x000D_

filter(function, iterable)

_x000D_ _x000D_

其中,function是一个函数,iterable是一个可迭代对象,例如列表、元组、字典等。function函数接受一个参数,并返回一个布尔值,用于判断iterable中的元素是否需要被过滤掉。如果function返回True,则这个元素会被保留下来,否则会被过滤掉。

_x000D_

下面是一个简单的例子,我们使用filter函数来过滤出一个列表中的偶数:

_x000D_

`python

_x000D_

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

_x000D_

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

_x000D_

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

_x000D_ _x000D_

在这个例子中,我们使用了lambda表达式来定义了一个函数,这个函数用于判断一个数是否为偶数。我们把这个函数传递给了filter函数,filter函数会自动遍历numbers列表中的每一个元素,并根据这个函数的返回值来过滤掉一些元素,最终返回一个只包含偶数的列表。

_x000D_

## filter函数的高级用法

_x000D_

除了基本用法之外,filter函数还有很多高级用法,接下来我们来一一介绍。

_x000D_

### 使用filter函数过滤出字典中的某些键值对

_x000D_

在Python中,我们可以使用字典来存储一些键值对,如果我们想要过滤出其中一些键值对,可以使用filter函数。例如,我们有一个字典,其中存储了一些学生的姓名和成绩,我们想要过滤出成绩大于等于90分的学生:

_x000D_

`python

_x000D_

scores = {'Tom': 85, 'Jerry': 92, 'Mickey': 78, 'Minnie': 95}

_x000D_

high_scores = dict(filter(lambda x: x[1] >= 90, scores.items()))

_x000D_

print(high_scores) # {'Jerry': 92, 'Minnie': 95}

_x000D_ _x000D_

在这个例子中,我们首先使用scores.items()方法把字典转换成了一个包含键值对的元组列表,然后使用lambda表达式来定义了一个函数,这个函数用于判断一个键值对的值是否大于等于90分。我们把这个函数传递给了filter函数,filter函数会自动遍历每一个键值对,并根据这个函数的返回值来过滤掉一些键值对,最终返回一个只包含成绩大于等于90分的字典。

_x000D_

### 使用filter函数过滤出列表中的重复元素

_x000D_

在Python中,我们可以使用set函数来去除一个列表中的重复元素,但是如果我们想要过滤出这些重复元素,可以使用filter函数。例如,我们有一个列表,其中包含了一些重复的元素,我们想要过滤出这些重复元素:

_x000D_

`python

_x000D_

numbers = [1, 2, 3, 4, 2, 3, 5, 6, 1]

_x000D_

duplicates = set(filter(lambda x: numbers.count(x) > 1, numbers))

_x000D_

print(duplicates) # {1, 2, 3}

_x000D_ _x000D_

在这个例子中,我们首先使用lambda表达式来定义了一个函数,这个函数用于判断一个元素在列表中出现的次数是否大于1。然后,我们把这个函数传递给了filter函数,filter函数会自动遍历每一个元素,并根据这个函数的返回值来过滤掉一些元素,最终返回一个只包含重复元素的集合。

_x000D_

### 使用filter函数过滤出列表中的空字符串

_x000D_

在Python中,我们可以使用if语句来判断一个字符串是否为空字符串,但是如果我们想要过滤出一个列表中的空字符串,可以使用filter函数。例如,我们有一个列表,其中包含了一些空字符串,我们想要过滤出这些空字符串:

_x000D_

`python

_x000D_

words = ['hello', '', 'world', ' ', 'python', '', '']

_x000D_

empty_words = list(filter(lambda x: x == '', words))

_x000D_

print(empty_words) # ['', '']

_x000D_ _x000D_

在这个例子中,我们首先使用lambda表达式来定义了一个函数,这个函数用于判断一个字符串是否为空字符串。然后,我们把这个函数传递给了filter函数,filter函数会自动遍历每一个字符串,并根据这个函数的返回值来过滤掉一些字符串,最终返回一个只包含空字符串的列表。

_x000D_

## filter函数的相关问答

_x000D_

### Q1:filter函数和map函数有什么区别?

_x000D_

A1:filter函数和map函数都是Python中的内置函数,它们都可以对一个可迭代对象进行操作。它们的作用不同。map函数会对可迭代对象中的每一个元素都应用一个函数,并返回一个新的可迭代对象,而filter函数会根据一个函数的返回值来过滤掉一些元素,并返回一个新的可迭代对象。

_x000D_

### Q2:filter函数可以过滤出哪些类型的可迭代对象?

_x000D_

A2:filter函数可以过滤出任何类型的可迭代对象,包括列表、元组、字典、集合等。

_x000D_

### Q3:filter函数的函数参数可以是什么类型?

_x000D_

A3:filter函数的函数参数可以是任何可调用对象,包括函数、lambda表达式、方法等。

_x000D_

### Q4:filter函数的返回值是什么类型?

_x000D_

A4:filter函数的返回值是一个迭代器,可以使用list函数将其转换成列表。

_x000D_
tags: python教程
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT