我有两个清单:
a,b=[1,2],[33,44]
我想探索他们的最低限度。但
>>> min(a,b)
将[1, 2]
作为min()
使用多个参数,返回最小的参数。
如果我使用map()
,也会发生同样的情况
map(min,a,b)
大致相当于:
[f(x1, x2) for x1, x2 in zip(sequence1, sequence2)]
已在此answer中说明。
>>> map(min,[a,b])
[1, 33]
给了我我想要的东西,但我不明白为什么。谁能解释一下?
答案 0 :(得分:1)
答案在Python map
documentation中:
将函数应用于iterable的每个项目并返回结果列表。 如果传递了其他可迭代参数,则函数必须使用那么多参数,并且并行地应用于所有可迭代的项。
致电时:
map(min, a, b)
您实际上已将两个可迭代传递给map
。这会相继调用min(1, 33)
和min(2, 44)
,从而返回[1, 2]
。
然而,在:
map(min, [a, b])
在序列的每个元素上都有一个可迭代的map
次调用min
:
min([1, 2])
1
min([33, 44])
33
结果如预期的那样是[1, 33]
。