Python的map()函数是一个内置的高阶函数,它将给定的函数应用于可迭代对象(如列表、元组或集合)的每个元素,并返回一个包含结果的迭代器。它是一种在不需要显式循环的情况下对集合的每个元素执行操作的方便方法。
map()函数接受两个参数:第一个是要应用于可迭代对象的每个元素的函数,第二个是可迭代对象本身。输入函数应该接受一个来自可迭代对象的元素作为单个参数,并返回一个将包含在结果迭代器中的值。
当你调用map()函数时,它会遍历输入的可迭代对象,并将提供的函数应用于每个元素。结果收集在一个新的迭代器中,可以根据需要转换为列表、元组或其他可迭代类型。
在Python中,你可以将任何函数(包括lambda函数)作为map()的输入函数。lambda函数是用lambda关键字定义的匿名函数,它们可以直接在map()调用中使用,用于创建小型的一次性使用的函数。
当需要对集合的每个元素应用特定的操作或转换时,map()函数特别有用,例如缩放数值、转换数据类型或从复杂数据结构中提取信息。通过使用map()和lambda函数或其他自定义函数,你可以为逐元素操作创建更易读、更简洁的代码。
示例:
注意1:本页面的所有示例都是用Python 3.x编写的。如果你使用Python 2.x,可能无法正常工作。
注意2:除非特别提及,否则本页面的所有示例都假定是在Windows 7上编写/运行的。如果你在其他操作系统上运行,可能需要稍微修改一下语法。
应用带有一个参数的正常函数的map - 示例1
应用带有一个参数的lambda函数的map - 示例2
应用带有多个参数的正常函数的map - 示例3
应用带有多个参数的lambda函数的map - 示例4
打印映射对象中的所有项目 - 示例5
打印映射对象中的所有项目 - 示例6
打印映射对象中的所有项目 - 示例7
索引映射对象中的项目 - 示例8
< Example 1 >
def f(x):
y = x^2 + 2*x + 3
return y
xList = [-3,-2,-1,0,1,2,3]
yList = map(f,xList)
print(yList)
print(list(yList))
Result :----------------------------------
<map object at 0x0306C770>
[2, -1, -4, 5, 6, 11, 8]
< Example 2 >
xList = [-3,-2,-1,0,1,2,3]
yList = map(lambda x: x^2 + 2*x + 3,xList)
print(yList)
print(list(yList))
Result :----------------------------------
<map object at 0x0314C7D0>
[2, -1, -4, 5, 6, 11, 8]
< Example 3 >
def timeStamp(y,m,d):
tStamp = str(y) + "-" + m + "-" + str(d)
return tStamp
yList = [2017,2017,2017,2017]
mList = ["Jan","Feb","Mar","Apr"]
dList = [1,3,6,7];
tStamp = map(timeStamp,yList,mList,dList)
print(tStamp)
print(list(tStamp))
Result :----------------------------------
<map object at 0x03000A30>
['2017-Jan-1', '2017-Feb-3', '2017-Mar-6', '2017-Apr-7']
< Example 4 >
yList = [2017,2017,2017,2017]
mList = ["Jan","Feb","Mar","Apr"]
dList = [1,3,6,7];
tStamp = map(lambda y,m,d : str(y) + "-" + m + "-" + str(d) ,yList,mList,dList)
print(tStamp)
print(list(tStamp))
Result :----------------------------------
<map object at 0x03091A30>
['2017-Jan-1', '2017-Feb-3', '2017-Mar-6', '2017-Apr-7']
< Example 5 >
yList = [2017,2017,2017,2017]
mList = ["Jan","Feb","Mar","Apr"]
dList = [1,3,6,7];
tStamp = map(lambda y,m,d : str(y) + "-" + m + "-" + str(d) ,yList,mList,dList)
for index, item in enumerate(tStamp):
print(index,',',item)
Result :----------------------------------
0 , 2017-Jan-1
1 , 2017-Feb-3
2 , 2017-Mar-6
3 , 2017-Apr-7
< Example 6 >
yList = [2017,2017,2017,2017]
mList = ["Jan","Feb","Mar","Apr"]
dList = [1,3,6,7];
tStamp = map(lambda y,m,d : str(y) + "-" + m + "-" + str(d) ,yList,mList,dList)
for item in enumerate(tStamp):
print(item)
Result :----------------------------------
(0, '2017-Jan-1')
(1, '2017-Feb-3')
(2, '2017-Mar-6')
(3, '2017-Apr-7')
< Example 7 >
yList = [2017,2017,2017,2017]
mList = ["Jan","Feb","Mar","Apr"]
dList = [1,3,6,7];
tStamp = map(lambda y,m,d : str(y) + "-" + m + "-" + str(d) ,yList,mList,dList)
for item in enumerate(tStamp):
print(item[0],',',item[1])
Result :----------------------------------
0 , 2017-Jan-1
1 , 2017-Feb-3
2 , 2017-Mar-6
3 , 2017-Apr-7
< Example 8 >
yList = [2017,2017,2017,2017]
mList = ["Jan","Feb","Mar","Apr"]
dList = [1,3,6,7];
tStamp = map(lambda y,m,d : str(y) + "-" + m + "-" + str(d) ,yList,mList,dList)
tStampList = list(tStamp);
print(tStampList)
print(tStampList[0])
print(tStampList[1:3])
Result :----------------------------------
['2017-Jan-1', '2017-Feb-3', '2017-Mar-6', '2017-Apr-7']
2017-Jan-1
['2017-Feb-3', '2017-Mar-6']
< Example xx >