Python map 函数将用户给定的函数应用于列表、元组等可迭代对象中的每个项。接着,它返回一个结果值列表。在本节中,我们将讨论如何使用它,并提供示例。map 函数的基本语法是:
map(function_name, iterables,...)
Python map 值示例
在此 map 示例中,我们声明了一个名为 addition 的函数。它将一个数字与自身相加并返回该值。接着,我们声明了一个从 10 到 50 的数字列表。然后,我们使用它将每个数字项与自身相加。
此函数默认返回 map 对象作为输出值。因此,我们必须将该对象转换为任何可迭代对象。最后一条 print 语句将其转换为列表并打印值。
def addition(num):
return num + num
numbers = [10, 20, 30, 40, 50]
result = map(addition, numbers)
print(list(result))
[20, 40, 60, 80, 100]
提示:请参阅列表文章以了解它们。
Python map 字符串示例
我们同时使用数字值和字符。在这里,(addition, chars) 意味着对于 chars 中的每个字符,都会调用 addition。字符或字符串上的 + 符号将它们连接起来。
def addition(num):
return num + num
chars = ['a', 'b', 'c', 'd', 'e']
numbers = [10, 20, 30, 40, 50]
res = map(addition, chars)
print('Chars List = ', list(res))
result = map(addition, numbers)
print('Numbers List = ', list(result))
Chars List = ['aa', 'bb', 'cc', 'dd', 'ee']
Numbers List = [20, 40, 60, 80, 100]
到目前为止,我们一直在对一个可迭代对象(单个)使用此函数。在此 Python 示例中,我们创建了一个接受两个参数并返回这些值之和的 map 函数。接着,我们声明了两个数字。
在这里,(addition, numbers1, numbers2) 意味着它从两个列表中取第一个值,应用 addition,依此类推。例如,(addition, 10, 150) 变为 160。接着,我们在水果(字符串)上使用相同的场景。它执行连接。
def addition(a, b):
return a + b
numbers1 = [10, 20, 30, 40, 50]
numbers2 = [150, 250, 350, 450, 550]
res = map(addition, numbers1, numbers2)
print(list(res))
fruits1 = ['apple', 'orange', 'kiwi']
fruits2 = ['banana', 'cherry', 'berry']
result = map(addition, fruits1, fruits2)
print(list(result))
[160, 270, 380, 490, 600]
['applebanana', 'orangecherry', 'kiwiberry']
Python map 内置阶乘和 len 函数示例
在这里,我们使用内置函数作为参数。对于这个 Python 演示,我们使用了 阶乘方法和 len 方法。
在这里,阶乘函数查找数字中每个元素的阶乘。接着,len 函数查找水果中每个项或水果的长度。
import math
def factorial_func(num):
return math.factorial(num)
def len_func(x):
return len(x)
numbers = [1, 2, 3, 4, 5, 6, 7]
result = map(factorial_func, numbers)
print(list(result))
fruits = ['apple', 'orange', 'kiwi', 'banana', 'pineapple']
result1 = map(len_func, fruits)
print(list(result1))
[1, 2, 6, 24, 120, 720, 5040]
[5, 6, 4, 6, 9]
Python map lambda 示例
您可以在此 map 函数内部使用 lambda 表达式,使代码更具可读性。
(lambda x: x * x, numbers) 返回 numbers 中每个项的平方。(lambda a:a.upper(), fruits) 使用 upper 并将每个水果转换为大写。接着,(lambda a:a.capitalize(), fruits) 使用 capitalize 将每个水果的第一个字符大写。

lambda 多个参数示例
让我们将多个可迭代对象与 map 和 lambda 一起使用。此示例接受两个列表并将一个列表中的每个项与另一个列表中的相应项相加。
numbers1 = [10, 20, 30, 40, 50] numbers2 = [150, 250, 350, 450, 550] res = map(lambda x, y: x + y, numbers1, numbers2) print(list(res)) fruits1 = ['apple', 'orange', 'kiwi'] fruits2 = ['banana', 'cherry', 'berry'] result = map(lambda a, b: a + b, fruits1, fruits2) print(list(result))
[160, 270, 380, 490, 600]
['applebanana', 'orangecherry', 'kiwiberry']
Python map lambda 多个函数示例
到目前为止,我们已经展示了如何对值列表使用单个函数。但是,您也可以对每个项应用多个函数。在这里,我们声明或定义了三个函数。接着,我们用这三个名称创建了一个函数。
首先,我们使用带 range 的 for 循环迭代从 1 到 9 的值。接着,我们使用 lambda 将每个 for 循环项分配给列表。这意味着对于 1,它将调用 square_func、tripple_func 和 four_func,对于 2 等依此类推。
def square_func(num):
return num**2
def tripple_func(num):
return num * num * num
def four_func(num):
return num**4
function_list = [square_func, tripple_func, four_func]
for i in range(1, 10):
number = map(lambda x: x(i), function_list)
print("For ", i, " = " , list(number))
For 1 = [1, 1, 1]
For 2 = [4, 8, 16]
For 3 = [9, 27, 81]
For 4 = [16, 64, 256]
For 5 = [25, 125, 625]
For 6 = [36, 216, 1296]
For 7 = [49, 343, 2401]
For 8 = [64, 512, 4096]
For 9 = [81, 729, 6561]
Python map 转换为列表、集合和元组
到目前为止,我们一直将结果显示为列表。但是,您可以将此 map 对象输出转换为任何可迭代对象,例如 元组或 集合。
- 使用 list(result)。
- 对于元组,使用 tuple(result)。
- 对于集合也一样。使用 set(result)。
首先,我们创建了一个 square_func 来查找给定数字的平方,然后声明了数字。接着,我们将 map 函数结果转换为列表、元组和集合。
def square_func(num):
return num**2
numbers = [10, 20, 30, 40, 50]
lt_result = map(square_func, numbers)
my_list = list(lt_result)
print(my_list)
tp_result = map(square_func, numbers)
my_tuple = tuple(tp_result)
print(my_tuple)
st_result = map(square_func, numbers)
my_set = set(st_result)
print(my_set)
[100, 400, 900, 1600, 2500]
(100, 400, 900, 1600, 2500)
{1600, 900, 2500, 100, 400
您可以使用此 map 将结果转换为嵌套列表或嵌套元组。在这里,我们调用可迭代对象以及水果。
fruits = ['apple', 'berry', 'kiwi'] result = map(list, fruits) print(list(result))
[['a', 'p', 'p', 'l', 'e'], ['b', 'e', 'r', 'r', 'y'], ['k', 'i', 'w', 'i']]