Python的内置函数map()
Python 的内置函数 map()
用于对可迭代对象(如列表、元组等)中的每一个元素执行指定的函数,并返回一个包含所有函数执行结果的迭代器(可以用 list()
或 tuple()
等将其转换为列表或元组)。
1. map()
的语法
map(function, iterable, ...)
function
:要应用到每个元素上的函数。iterable
:一个或多个可迭代对象(如列表、元组等)。
2. 工作原理
map()
函数会将 iterable
中的每一个元素传递给 function
进行处理,然后将 function
返回的结果收集起来,最后返回一个包含所有结果的迭代器。
3. 示例
示例1:将一个列表中的每个元素平方
numbers = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, numbers)
print(list(squared)) # 输出 [1, 4, 9, 16]
示例2:将两个列表中的对应元素相加
list1 = [1, 2, 3]
list2 = [4, 5, 6]
sum_lists = map(lambda x, y: x + y, list1, list2)
print(list(sum_lists)) # 输出 [5, 7, 9]
示例3:将字符串列表中的每个字符串转换为大写
words = ['apple', 'banana', 'cherry']
uppercase_words = map(str.upper, words)
print(list(uppercase_words)) # 输出 ['APPLE', 'BANANA', 'CHERRY']
4. 多个可迭代对象
当 map()
函数有多个可迭代对象时,它会将这些对象中对应位置的元素传递给 function
进行处理。如果长度不一致,则以最短的可迭代对象为基准。
示例4:多个可迭代对象
list1 = [1, 2, 3]
list2 = [4, 5, 6, 7]
result = map(lambda x, y: x + y, list1, list2)
print(list(result)) # 输出 [5, 7, 9]
5. 使用 map()
和 list
进行元素类型转换
map()
也可以用来转换元素类型,比如将字符串列表转换为整数列表。
示例5:字符串列表转换为整数列表
str_numbers = ['1', '2', '3']
int_numbers = map(int, str_numbers)
print(list(int_numbers)) # 输出 [1, 2, 3]
6. 与列表推导式的对比
map()
函数与列表推导式都可以用来对列表中的元素进行批量操作,但 map()
更加清晰地表达了将一个函数应用于一组元素的意图。
示例6:列表推导式与 map()
numbers = [1, 2, 3, 4]
# 使用 map()
squared_map = list(map(lambda x: x ** 2, numbers))
print(squared_map) # 输出 [1, 4, 9, 16]
# 使用列表推导式
squared_list = [x ** 2 for x in numbers]
print(squared_list) # 输出 [1, 4, 9, 16]
7. 小结
map()
函数是 Python 中一个强大而简洁的工具,适用于需要对可迭代对象的每个元素应用相同函数的场景。它的最大优势在于代码的简洁性和可读性,特别是在处理多个可迭代对象时表现得更加灵活。
License:
CC BY 4.0