Python中的`map()`函数和它的用法
map()函数是Python内置的高阶函数。它接受一个函数和一个可迭代对象作为参数,返回一个可迭代对象,其中每个元素都是原可迭代对象元素通过该函数转换而来。下面我们来详细探讨一下map()函数及其用法。
函数格式:
map(function, iterable, ...)
参数:
- function:函数,可以是匿名函数或自定义函数。
- iterable:一个或多个可迭代的对象,比如列表、元组、集合、字符串等。如果传入多个可迭代对象,map()函数会依次将它们的对应元素送给function处理,即按元素的索引顺序依次取相应的元素,如 个可迭代对象的 元素和第二个可迭代对象的 元素组成新的元组,送给function函数进行处理。
- ...:可选参数,放在可迭代对象后面,表示可以传入多个可迭代对象,但要注意,传入的可迭代对象元素个数应该相等。
返回值:
- 返回一个迭代器对象,每次调用迭代器的__next__()方法,就可以依次取出处理后的元素。
举例:
# 将列表中每个元素加一 lst = [1, 2, 3, 4, 5] result = map(lambda x:x+1, lst) print(list(result)) # 输出:[2, 3, 4, 5, 6] # 将字符串中的每个字符转换为对应的ASCII码 s = "abc" result = map(ord, s) print(list(result)) # 输出:[97, 98, 99] # 将两个列表相同索引位置上的元素相加 lst1 = [1, 2, 3] lst2 = [4, 5, 6] result = map(lambda x,y:x+y, lst1, lst2) print(list(result)) # 输出:[5, 7, 9]
从以上例子中可以看出,map()函数可以处理多个类型不同的可迭代对象,也可以使用匿名函数完成简单的操作。
除了map()函数,Python中还有三个类似的高阶函数:filter()、reduce()和zip()。
filter()函数是用来过滤序列的高阶函数,它接受一个函数和一个序列作为参数,返回所有使得函数返回值为True的元素的序列。
reduce()函数是一个累积函数,接受一个函数和一个序列作为参数,从左到右依次将可迭代对象中的元素前两个传入函数进行处理,得到一个结果,然后再把这个结果和序列中的下一个元素进行处理,直到序列处理完毕并得到一个结果。
zip()函数是用来将两个序列组合成一个元组的高阶函数,与map()函数的区别在于它是按照索引顺序将可迭代对象中的元素进行组合。如果两个序列长度不等,则以短序列的长度为准。对于Python3.x版本来说,zip()函数返回的是一个迭代器对象。
综上所述,map()函数可以方便地将一个可迭代对象中的每个元素都进行一次函数处理,并将结果组成新的可迭代对象,是一种常用的高阶函数。
