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].为什么三个数字?
map()
依次从作为第二个和后续参数传递的所有序列中获取每个元素。因此代码等效于:
print([max(4, 1), max(3, 9), max(7, 2)])
Run Code Online (Sandbox Code Playgroud)
你在考虑
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)
归档时间: |
|
查看次数: |
133 次 |
最近记录: |