Python之map用法
原创大约 2 分钟
Python之map用法
Python的
map()
函数是一个非常有用的工具,可以用来对可迭代对象(如列表、元组等)中的每个元素应用一个指定的函数。以下是map()
函数的各种用法:
1. 基本用法
map(function, iterable)
会将 function
应用于 iterable
中的每一个元素,并返回一个迭代器。
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
2. 使用 lambda
表达式
lambda
表达式可以用于定义简短的匿名函数。
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
3. 对多个可迭代对象使用 map()
map()
函数可以接受多个可迭代对象,当提供多个可迭代对象时,函数应当接受相应数量的参数。
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
result = map(lambda x, y, z: x + y + z, a, b, c)
print(list(result)) # Output: [12, 15, 18]
4. 使用 map()
进行类型转换
map()
也可以用于类型转换,例如将字符串列表转换为整数列表。
strings = ["1", "2", "3", "4"]
numbers = map(int, strings)
print(list(numbers)) # Output: [1, 2, 3, 4]
5. 使用 map()
与 None
函数
当 function
参数为 None
时,map()
函数会直接返回 iterable
的元素。
a = [1, 2, 3]
b = [4, 5, 6]
result = map(None, a, b)
print(list(result)) # Output: [(1, 4), (2, 5), (3, 6)]
6. 与其他高阶函数结合使用
map()
可以与 filter()
、reduce()
等其他高阶函数结合使用。
from functools import reduce
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
even_squares = filter(lambda x: x % 2 == 0, squared_numbers)
sum_of_even_squares = reduce(lambda x, y: x + y, even_squares)
print(sum_of_even_squares) # Output: 20 (4 + 16)
7. 处理嵌套结构
可以使用 map()
处理嵌套结构的可迭代对象,例如二维列表。
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
transposed = map(list, zip(*matrix))
print(list(transposed)) # Output: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
注意事项
map()
函数返回一个迭代器,包含对可迭代对象中的每个元素应用函数后的结果。- 第一个参数是一个函数,后续参数是一个或多个可迭代对象。
- 如果提供多个可迭代对象,函数会并行地应用于这些对象中的元素。
- 结果的长度与最短的可迭代对象长度一致。
写在最后
map()
函数非常灵活,可以简化许多需要对可迭代对象进行逐元素操作的任务。结合lambda
表达式和其他高阶函数,可以实现复杂的数据处理逻辑。