调用BIF地图(min()) - 会发生什么?

时间:2012-09-05 13:25:34

标签: python function min

我有两个清单:

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]

给了我我想要的东西,但我不明白为什么。谁能解释一下?

1 个答案:

答案 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]