リストを返すマップ機能には、特にインタラクティブセッション中の入力を節約できるという利点があります。リストを返すlmap
関数を定義することができます(python2と同様にimap
):
lmap = lambda func, *iterable: list(map(func, *iterable))
次に、lmap
ではなくを呼び出すmap
と、ジョブが実行されます:
lmap(str, x)
よりも5文字(この場合は30%)list(map(str, x))
短く、確かによりも短くなり[str(v) for v in x]
ます。同様の関数を作成することもできfilter
ます。
元の質問にコメントがありました:
すべてのPython3バージョンに適用されるため、Python 3. *でリストを返すには、Getting map()に名前を変更することをお勧めします。これを行う方法はありますか?– meawoppl 1月24日17:58
それは可能ですが、非常に悪い考えです。ちょうど楽しみのために、ここにあなたができる方法があります(すべきではありません)。
__global_map = map #keep reference to the original map
lmap = lambda func, *iterable: list(__global_map(func, *iterable)) # using "map" here will cause infinite recursion
map = lmap
x = [1, 2, 3]
map(str, x) #test
map = __global_map #restore the original map and don't do that again
map(str, x) #iterator
map()
たほとんどの言語から削除リスト内包または上でそれを使用する理由はありませんので、for
ループが。