1

map() 関数をテストして、それを理解していたところ、問題が発生しました。numbers0 から 2 までのすべての数値に 3 を掛けようとしただけです。

numbers = [1,2,3,4]

test = map(lambda x: x * 3 for x in range(3), numbers)

print test

私はおそらく明らかな何かを見逃しています、それは何ですか? ありがとう。

4

3 に答える 3

3

map()が理解してくれます - 別のものを追加する必要はありません (実際には、すでに見たようにできません)。

正しい構文は次のとおりです。

map(lambda x: x * 3, numbers)

これは次と同等です:

[x * 3 for x in numbers]
于 2013-10-13T00:24:44.283 に答える
1

そのはず:

test = map(lambda x:x*3, numbers)

問題は、map が 2 つの引数を取ることです。つまり、マップされる関数と、関数がマップされる iterable です。この場合、ラムダは関数でありnumbers、反復可能です。Python では、通常[x*3 for x in numbers]、リストまたは(x*3 for x in numbers)ジェネレータ (遅延評価) に対して行うことに注意してください。

于 2013-10-13T00:23:08.160 に答える
1

これを行う 2 つの異なる方法を混在させています。

リスト内包表記の使用

[x*3 for x in range(3)]

マップとラムダ式の使用

map(lambda x:x*3, range(3))
于 2013-10-13T00:24:49.200 に答える