百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[其它内容] 使用map和filter高效处理可迭代对象 [复制链接]
查看:102 | 回复:1

1477

主题

1656

帖子

9

积分

落伍者(一心一意)

Rank: 1

贡献
685
鲜花
0
注册时间
2016-6-22

落伍者落伍微信绑定落伍手机绑定

发表于 2024-8-14 16:50:18 | 显示全部楼层 |阅读模式 来自 中国江苏淮安
华科云商丑图1.jpg
在 Python 编程中,处理可迭代对象(如列表、元组、集合)是常见且重要的任务。为了提高代码的简洁性和运行效率,Python 提供了许多内置函数,其中 `map()` 和 `filter()` 是最常用的两种。它们不仅能够高效地处理数据,还能使代码更加清晰易读。本文将介绍 `map()` 和 `filter()` 的使用方法及其在实际编程中的应用。

一、`map()` 函数:批量处理数据

`map()` 函数用于对可迭代对象中的每个元素应用指定的函数,并返回一个包含结果的迭代器。它特别适合用于需要对整个数据集进行相同操作的场景。

1.1 基本用法

`map()` 函数的基本语法如下:

```python

map(function, iterable)

```

- `function`:要应用于每个元素的函数。

- `iterable`:一个或多个可迭代对象。

示例:对列表中的每个元素进行平方

```python

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

squared_numbers = map(lambda x: x**2, numbers)

print(list(squared_numbers))

```

输出:

```

[1, 4, 9, 16, 25]

```

在这个例子中,`map()` 函数将匿名函数 `lambda x: x**2` 应用于 `numbers` 列表中的每个元素,返回一个包含平方值的新列表。

1.2 多个可迭代对象

`map()` 还支持同时对多个可迭代对象进行处理,前提是这些对象的长度相同。

```python

a = [1, 2, 3]

b = [4, 5, 6]

summed = map(lambda x, y: x + y, a, b)

print(list(summed))

```

输出:

```

[5, 7, 9]

```

在这里,`map()` 将两个列表 `a` 和 `b` 的对应元素相加,返回一个新列表。

二、`filter()` 函数:筛选数据

`filter()` 函数用于对可迭代对象中的元素进行筛选,保留满足条件的元素。它返回一个包含筛选结果的迭代器。

2.1 基本用法

`filter()` 函数的基本语法如下:

```python

filter(function, iterable)

```

- `function`:返回布尔值的函数,用于判断是否保留元素。

- `iterable`:要筛选的可迭代对象。

示例:筛选列表中的偶数

```python

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

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

print(list(even_numbers))

```

输出:

```

[2, 4, 6]

```

在这个例子中,`filter()` 函数只保留 `numbers` 列表中能够被 2 整除的元素。

2.2 结合 `map()` 与 `filter()`

`map()` 和 `filter()` 可以结合使用,先对数据进行转换,再进行筛选。

```python

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

squared_even_numbers = filter(lambda x: x % 2 == 0, map(lambda x: x**2, numbers))

print(list(squared_even_numbers))

```

输出:

```

[4, 16, 36]

```

在这里,`map()` 先将列表中的每个元素平方,然后 `filter()` 筛选出平方后为偶数的元素。

三、实际应用场景

`map()` 和 `filter()` 在实际编程中有广泛的应用,尤其适合数据处理、批量转换、条件筛选等场景。以下是几个常见的应用示例:

1. **数据清洗**

在数据科学中,经常需要对原始数据进行清洗。`map()` 可用于对整个数据集进行转换,而 `filter()` 则可以去除不符合要求的数据。

```python

data = ["  apple  ", "banana", "  cherry", "  "]

cleaned_data = filter(lambda x: x.strip(), map(lambda x: x.strip(), data))

print(list(cleaned_data))

```

输出:

```

['apple', 'banana', 'cherry']

```

在这个例子中,`map()` 先去除每个字符串的前后空格,然后 `filter()` 去除空字符串。

2. **批量修改对象属性**

当处理对象列表时,`map()` 可用于批量修改对象的某个属性。

```python

class Person:

     def __init__(self, name, age):

         self.name = name

         self.age = age

people = [Person("Alice", 25), Person("Bob", 30), Person("Charlie", 35)]

updated_people = map(lambda p: Person(p.name, p.age + 1), people)

for person in updated_people:

     print(person.name, person.age)

```

输出:

```

Alice 26

Bob 31

Charlie 36

```

在这个例子中,`map()` 将每个人的年龄增加了一岁。

3. **数据分析**

`filter()` 在数据分析中也很有用,特别是在需要从大量数据中提取特定信息时。

```python

data = [100, 200, 300, 400, 500]

threshold = 250

filtered_data = filter(lambda x: x > threshold, data)

print(list(filtered_data))

```

输出:

```

[300, 400, 500]

```

在这个例子中,`filter()` 筛选出大于 250 的数据。

`map()` 和 `filter()` 是 Python 中两个强大的内置函数,它们使得对可迭代对象的处理更加高效和简洁。通过 `map()`,你可以轻松地对数据进行批量转换,而通过 `filter()`,你可以根据条件筛选数据。两者结合使用,可以极大地简化代码逻辑,使代码更加易读和易维护。
企业专线拨号VPS动态IP派克斯ADSL本地拨号,联系QQ174629754
回复

使用道具 举报

372

主题

1万

帖子

647

积分

落伍者(一心一意)

Rank: 1

贡献
2388
鲜花
0
注册时间
2020-6-17

落伍手机绑定落伍者

发表于 2024-8-16 14:29:01 | 显示全部楼层 来自 中国河南开封
愿收录[url=http://www.ytllck.com/news/gongsi/]超声波流量计[/url]
[url=http://www.ytllck.com/products/]流量计厂家[/url]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-11-25 01:05 , Processed in 0.064739 second(s), 34 queries , Gzip On.

返回顶部