Python中内置模块builtins中函数map()的详细用法和可变迭代对象情况下的使用程序举例

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函数用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值