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)]

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值