Python中内置模块builtins中函数map()的详细用法和可变迭代对象情况下的使用程序举例
目录
一、函数map()的基本介绍
1.1 基本内容
map() 函数是Python 内置函数,它可根据输入函数和可变数量的可迭代对象生成一个迭代器。
1.2 语法
Python 的 map() 函数语法为:
iterator=map(function, iterable, *iterables)
功能:将一个函数依次应用于一个或多个可迭代对象的元素上产生结果,并返回一个迭代器。对于多个可迭代对象,当最短的可迭代对象的元素用尽时,迭代器会停止。
输入:
function:一个函数,其参数个数应与后面传入的可迭代对象的数量一致。
iterable:第一个可迭代对象(如列表、元组,numpy.array数组等)。
*iterables:可变数量的迭代对象,表示可以传入任意多个额外的可迭代对象。
其中的 *iterables 表示该参数是一个可变数量的位置参数(variable-length positional arguments), *iterables 作用是允许传入多个可迭代对象(除了第一个 iterable 之外)。
返回:
iterator:map所生成的迭代器。
二、两个及以下可迭代对象情况下map使用
2.1、一个可迭代对象情况下使用map
例子1:
Time = [2025, 6, 28, 2]
float_Time = map(float, Time)
print(list(float_Time))
运行结果为:
[2025.0, 6.0, 28.0, 2.0]
例子2:将使用map将列表[“east”, “south”, “west”,“north”]大写。
Directions = ["east", "south", "west","north"]
upper_Directions = map(str.upper, Directions)
print(list(upper_Directions))
运行结果为:
['EAST', 'SOUTH', 'WEST', 'NORTH']
2.2.两个可迭代对象情况下使用map
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = map(lambda x, y: x**y, list1, list2)
print(list(result))
运行结果为:
[1, 32, 729]
三.多个可迭代对象情况下使用map
date= [2025,6, 28]
operator_to_day= [365,30, 1]
operator_to_hour = [24,24, 24]
result = map(lambda x, y,z: x*y*z, date, operator_to_day,operator_to_hour)
print(list(result))
运行结果为:
[17739000, 4320, 672]
四、不同数据结构下的map使用
4.1 map对list列表数据的映射使用
#采用一个map方式进行人体身高到人体体重的映射。
# 自定义一个函数:男士身高(单位:cm)转换为男士对应理想体重(单位:kg)的函数
def height_to_weight_male(h):
w_male=(h-80)*0.7
return w_male
# 自定义一个函数:女士身高(单位:cm)转换为女士对应理想体重(单位:kg)的函数
def height_to_weight_female(h):
w_female=(h-70)*0.6
return w_female
# 待映射计算的男女身高
height_male=[155,160,165,170,175,180,185] # 男士身高
height_female=[150,155,160,165,170,175,180] #女士身高
# 生成迭代器
iterator_weight_male1=map(height_to_weight_male, height_male) # 生成一个男士身高到男士对应理想体重的迭代器
iterator_weight_female1=map(height_to_weight_female, height_female) # 生成一个女士身高到女士对应理想体重的迭代器
# 将迭代器转换为对应列表
weight_male1=list(iterator_weight_male1)
weight_female1=list(iterator_weight_female1)
# 打印输出
print('男士身高[155,160,165,170,175,180,185]所对应的体重\n',weight_male1,'(kg)')
print('\n女士身高[150,155,160,165,170,175,180]所对应的体重\n',weight_female1,'(kg)')
运行结果为:
男士身高[155,160,165,170,175,180,185]所对应的体重
[52.5, 56.0, 59.49999999999999, 62.99999999999999, 66.5, 70.0, 73.5] (kg)
女士身高[150,155,160,165,170,175,180]所对应的体重
[48.0, 51.0, 54.0, 57.0, 60.0, 63.0, 66.0] (kg)
4.2 map对np.array数组数据的映射使用
#采用一个map函数进行人体身高到人体体重的映射。
import numpy as np
# 自定义一个函数:男士身高(单位:cm)转换为男士对应理想体重(单位:kg)的函数
def height_to_weight_male(h):
w_male=(h-80)*0.7
return w_male
# 自定义一个函数:女士身高(单位:cm)转换为女士对应理想体重(单位:kg)的函数
def height_to_weight_female(h):
w_female=(h-70)*0.6
return w_female
# 生成迭代器
iterator_weight_male2=map(height_to_weight_male, np.array([155,160,165,170,175,180,185])) # 生成一个男士身高到男士对应理想体重的迭代器
iterator_weight_female2=map(height_to_weight_female, np.array([150,155,160,165,170,175,180])) # 生成一个女士身高到女士对应理想体重的迭代器
# 将迭代器转换为对应列表
weight_male2=list(iterator_weight_male2)
weight_female2=list(iterator_weight_female2)
# 打印输出
print('男士身高[155,160,165,170,175,180,185]所对应的体重\n',weight_male2,'(kg)')
print('\n女士身高[150,155,160,165,170,175,180]所对应的体重\n',weight_female2,'(kg)')
运行结果为:
男士身高[155,160,165,170,175,180,185]所对应的体重
[np.float64(52.5), np.float64(56.0), np.float64(59.49999999999999), np.float64(62.99999999999999), np.float64(66.5), np.float64(70.0), np.float64(73.5)] (kg)
女士身高[150,155,160,165,170,175,180]所对应的体重
[np.float64(48.0), np.float64(51.0), np.float64(54.0), np.float64(57.0), np.float64(60.0), np.float64(63.0), np.float64(66.0)] (kg)
运行代号和结果如下图所示:
注意:
在map生成迭代器后,要想输出函数的计算结果,需要用list()进行转换,即:使用list(map(function,iterable))才能输出函数的计算结果。
五、总结
本文对Python中内置模块builtins中函数map()的详细用法进行介绍,并对其输入对象为一个,两个,多个情况时候的使用做了程序举例应用,便于熟练掌握map函数用法。