python:map()函数用法

   

目录

一、迭代器的介绍

二、map使用实例


    map() 是 Python 内置的一个高阶函数,它用于对一个可迭代对象(如列表、元组、字典等)中的每个元素应用指定的函数,并返回一个新的迭代器,其中包含经过该函数处理后的结果。

一、迭代器的介绍

        至于什么是迭代器呢?迭代器是一种能够遍历数据集合(如列表、元组、字典等)的对象,它一次只产生一个结果,并且只有在需要时才计算下一个结果。

        简单地说,迭代器可以理解为原材料,而列表、元组、字典可以理解为对原材料进行加工。迭代器的结果不能直接输出,需要“加工后”输出。

举个例子:

def square(n):
    return n**2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))  # 输出:[1, 4, 9, 16, 25]

实例中展示了将“迭代器”加工成“列表”进行输出。

如果想对迭代器进行访问,需要通过以下方式:

numbers = [1, 2, 3, 4, 5]
squared_iter = map(lambda x: x**2, numbers)

# 使用 for 循环遍历
for num in squared_iter:
    print(num)  # 输出:1, 4, 9, 16, 25

# 使用 next() 函数获取下一个结果
print(next(squared_iter))  # 输出:1
print(next(squared_iter))  # 输出:4

可以通过for直接遍历,也可以通过next()依次访问单个元素。 

那么,“它一次只产生一个结果,并且只有在需要时才计算下一个结果 ”这句话如何理解呢?

这就要说一说迭代器的优点了。迭代器有三大优点:延迟计算、节省空间和支持迭代协议。

        使用迭代器时,不需要一次性将整个数据集加载到内存中进行处理,而是在每次迭代时按需计算下一个结果。这对于处理大规模数据或者计算资源有限的情况非常有用,因为它可以避免一次性占用大量内存。由于迭代器仅存储必要的状态信息(而不是所有结果),因此即使处理的数据量很大,也不会显著增加程序的内存消耗。

        另外,Python 中的迭代器遵循迭代协议,这意味着你可以像操作其他可迭代对象一样使用它们,如通过 for 循环进行遍历,或者与 next() 函数、enumerate() 函数、zip() 函数等配合使用。

二、map使用实例

# 单个迭代对象
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers))

# 自定义函数
def square(n):
    return n ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))

# 多个迭代对象
list1 = ['a', 'b', 'c']
list2 = [1, 2, 3]
combined = map(lambda x, y: (x, y), list1, list2)
print(list(combined))

输出为:

[1, 4, 9, 16, 25]
[1, 4, 9, 16, 25]
[('a', 1), ('b', 2), ('c', 3)]

相关推荐

  1. SummaryWriter函数

    2024-04-29 06:24:02       54 阅读
  2. apply&lambda函数

    2024-04-29 06:24:02       65 阅读
  3. python:map()函数

    2024-04-29 06:24:02       30 阅读
  4. MATLAB中dlmwrite函数

    2024-04-29 06:24:02       58 阅读
  5. MATLAB中cell函数

    2024-04-29 06:24:02       63 阅读
  6. Excel中的INDIRECT函数

    2024-04-29 06:24:02       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 06:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 06:24:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 06:24:02       82 阅读
  4. Python语言-面向对象

    2024-04-29 06:24:02       91 阅读

热门阅读

  1. docker pull失败:x509: certificate has expired or is not yet

    2024-04-29 06:24:02       29 阅读
  2. electron 数据持久化方案

    2024-04-29 06:24:02       29 阅读
  3. 搜索引擎的发展历史

    2024-04-29 06:24:02       25 阅读
  4. ElasticSearch

    2024-04-29 06:24:02       30 阅读
  5. React的基础概念

    2024-04-29 06:24:02       32 阅读
  6. mysql数据库提权

    2024-04-29 06:24:02       26 阅读
  7. 3D头模加载

    2024-04-29 06:24:02       24 阅读
  8. 高频SQL 查找拥有有效邮箱的用户

    2024-04-29 06:24:02       28 阅读