1

私は2つのリストを持っています:

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)]

この回答ですでに述べたように。

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

私が欲しいものを私に与えますが、私は本当に理由がわかりません。誰かが説明できますか?

4

1 に答える 1

1

答えはPythonのmapドキュメントにあります:

iterableのすべての項目に関数を適用し、結果のリストを返します。追加の反復可能引数が渡された場合、関数はその数の引数を取る必要があり、すべての反復可能引数からの項目に並行して適用されます

電話をかけるとき:

map(min, a, b)

実際には、2つの反復可能オブジェクトをに渡していmapます。これにより、とが連続して呼び出さmin(1, 33)min(2, 44)、が返され[1, 2]ます。

ただし、次の場合:

map(min, [a, b])

反復可能なものが1つあり、シーケンスの各要素をmap呼び出します。min

  • min([1, 2])をもたらす最初の呼び出し1
  • min([33, 44])次に、どちらを呼び出すか33

結果は、予想どおり、です[1, 33]

于 2012-09-05T13:32:57.950 に答える