1

我有两个清单:

a,b=[1,2],[33,44]

我想探索它们的最小值。但

>>> min(a,b)

返回 [1, 2]min()

如果有多个参数,则返回最小的参数。

如果我使用map()as map(min,a,b)

主要相当于:

[f(x1, x2) for x1, x2 in zip(sequence1, sequence2)]

正如这个答案中已经说明的那样。

>>> map(min,[a,b])
[1, 33]

给了我想要的东西,但我真的不明白为什么。有人可以解释吗?

4

1 回答 1

1

答案在 Pythonmap文档中:

将函数应用于可迭代的每个项目并返回结果列表。如果传递了额外的可迭代参数,函数必须接受那么多参数并并行应用于所有可迭代的项目

你打电话时:

map(min, a, b)

您实际上是将两个迭代传递给map. 这依次调用min(1, 33)and min(2, 44),从而返回[1, 2]

但是,在:

map(min, [a, b])

有一个可迭代的,并map调用min序列的每个元素:

  • 第一次调用min([1, 2])产生1
  • 然后调用min([33, 44])which 产生33

结果,正如预期的那样[1, 33]

于 2012-09-05T13:32:57.950 回答