Python 函数 | map 函数详解

博友们,你们好,很高兴能在这里和大家分享技术文章,我是 Amo Xiang,是一名在职企业员工,Amo 来源于上家公司的英文名,本意是 。作为刚入行几年互联网行业的小白,博主写博客一方面是为了记录自己的学习过程以及所犯的错误,更多的是希望能够帮助到很多处于起步阶段的萌新,让他们少走弯路。在编写文章时,参考了大量书籍及一些互联网大佬的资源,并结合了自己的工作经验,博主本着科学、严谨的态度、力求精益求精,但疏漏之处在所难免,敬请广大博友批评指正。博客主页:https://blog.csdn.net/xw1680?spm=1011.2124.3001.5113

1. map 函数的介绍

1.1 功能

map() 函数接收一个函数和一个或者多个可迭代对象为参数,返回一个迭代器。此迭代器中每个元素都是函数参数依次作用于可迭代对象后的结果。

1.2 语法

map(func, *iterables) --> map object

参数说明:
(1) func:函数。
(2) iterables:一个或多个可迭代对象。
(3) 返回值:返回迭代器。

注意:map() 函数在 Python 2.x 返回的是列表,而在 Python 3.x 中返回的是迭代器。本文基于 Python 3.x 进行演示。

2. map 函数的应用

2.1 将列表中的元素转换为 Unicode 字符

定义一个整数列表,通过 map() 函数实现将该列表每一个元素转换为 Unicode 字符,代码如下:

num_list = [20320, 24456, 26834, 26834]
a = map(chr, num_list)
print(a)  # <map object at 0x00000226A7C629C8>
print(list(a))  # ['你', '很', '棒', '棒']

从程序的运行结果可以看出,map() 函数返回的是一个迭代器,通过使用 list() 函数将其转换为列表。

2.2 规范英文的大小写格式

通过 map() 函数规范英文短句中单词的大小写格式 (即首字母大写、其余字母小写),代码如下:

my_list = ["i", "am", "Amo", "xiang"]  # 创建列表
# def function(x):  # 定义函数
#     return x[0].upper() + x[1:].lower()  # 实现首字母大写,其他字母小写
print(f"规范后的英文短句: {list(map(lambda x: x[0].upper() + x[1:].lower(), my_list))}")
# 规范后的英文短句: ['I', 'Am', 'Amo', 'Xiang']
aa = list(map(lambda x: x[0].upper() + x[1:].lower(), my_list))
print(" ".join(aa))  # I Am Amo Xiang

2.3 对列表中的元素进行平方计算

生成 0-9 的数字列表,然后通过 map() 函数实现对该列表每一个元素的平方计算,代码如下:

list1 = [i for i in range(10)]
list2 = map(lambda x: x ** 2, list1)  # 返回一个迭代器对象
print(list(list2))  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

2.4 传入多个可迭代对象

当使用 map() 函数传入多个可迭代对象,且里面的元素长度不一致时,生成的迭代器以最短长度为主,代码如下:

list1 = [1, 3, 5]  # 列表1
list2 = [2, 4, 6, 8, 10]  # 列表2
# def func(x,y):
#     return x+y
result = map(lambda x, y: x + y, list1, list2)  # 返回一个迭代器对象
print(list(result))  # 输出 ==> [3, 7, 11]

当 map() 函数传入多个可迭代对象时,参数 func 必须能够接收足够多的参数,以保证每个可迭代对象同一索引的值均能正确传入函数,否则将出现 TypeError 错误提示。

2.5 使用 lambda 表达式对列表中的元素进行立方计算

首先定义一个列表,然后在 map() 函数中使用匿名函数 lambda 表达式,来实现对该列表中每一个元素的立方计算。代码如下:

s = [1, 2, 3]
s_map = map(lambda x, y, z: x * y * z, s, s, s)
print(list(s_map))  # [1, 8, 27]

2.6 使用 map 函数实现数据类型转换

实现将随机生成的三位数的数字分割为列表,首先将数字转换成字符型,但此时列表中的元素也同时变成了字符型数字,这时还需要通过 map() 函数对数据类型进一步转换为整型。例如,数字 612 ⇒ [‘6’,‘1’,‘2’] ⇒ [6,1,2],代码如下:

import random

# 随机生成10个三位数的数字
data_list = random.sample(range(100, 1000), 10)
for i in data_list:
    # 将随机的三位数分割为列表,并使用map()函数将字符型数字转换为整型
    print(str(i))
    num_list = list(map(int, str(i)))
    print(num_list)

感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

猜你喜欢

转载自blog.csdn.net/xw1680/article/details/111030937
今日推荐