Python之map用法
原创2024年7月3日大约 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表达式和其他高阶函数,可以实现复杂的数据处理逻辑。