map() 関数をテストして、それを理解していたところ、問題が発生しました。numbers
0 から 2 までのすべての数値に 3 を掛けようとしただけです。
numbers = [1,2,3,4]
test = map(lambda x: x * 3 for x in range(3), numbers)
print test
私はおそらく明らかな何かを見逃しています、それは何ですか? ありがとう。
map()
が理解してくれます - 別のものを追加する必要はありません (実際には、すでに見たようにできません)。
正しい構文は次のとおりです。
map(lambda x: x * 3, numbers)
これは次と同等です:
[x * 3 for x in numbers]
そのはず:
test = map(lambda x:x*3, numbers)
問題は、map が 2 つの引数を取ることです。つまり、マップされる関数と、関数がマップされる iterable です。この場合、ラムダは関数でありnumbers
、反復可能です。Python では、通常[x*3 for x in numbers]
、リストまたは(x*3 for x in numbers)
ジェネレータ (遅延評価) に対して行うことに注意してください。
これを行う 2 つの異なる方法を混在させています。
リスト内包表記の使用
[x*3 for x in range(3)]
マップとラムダ式の使用
map(lambda x:x*3, range(3))