地图(max())调用的Python语法

LNI*_*LNI 4 python syntax python-3.x

我在Python的"初学者"教程之一中遇到了这段特殊的代码.它没有逻辑意义,如果有人能向我解释,我会很感激.

print(list(map(max, [4,3,7], [1,9,2])))
Run Code Online (Sandbox Code Playgroud)

我认为它会打印[4,9](通过在每个提供的列表上运行max(),然后在每个列表中打印最大值).而是打印[4,9,7].为什么三个数字?

Ign*_*ams 5

map()依次从作为第二个和后续参数传递的所有序列中获取每个元素。因此代码等效于:

print([max(4, 1), max(3, 9), max(7, 2)])
Run Code Online (Sandbox Code Playgroud)


use*_*ica 5

你在考虑

print(list(map(max, [[4,3,7], [1,9,2]])))
#                   ^                ^
Run Code Online (Sandbox Code Playgroud)

提供一个序列map,其元素是[4,3,7][1,9,2].

您发布的代码:

print(list(map(max, [4,3,7], [1,9,2])))
Run Code Online (Sandbox Code Playgroud)

提供[4,3,7][1,9,2]作为单独的参数map.当map接收到多个序列时,它会并行迭代这些序列,并将相应的元素作为单独的参数传递给映射函数,即max.

而不是打电话

max([4, 3, 7])
max([1, 9, 2])
Run Code Online (Sandbox Code Playgroud)

它叫

max(4, 1)
max(3, 9)
max(7, 2)
Run Code Online (Sandbox Code Playgroud)