そんなこと知ってる
map(function, arguments)
と同等です
for argument in arguments:
function(argument)
map 関数を使用して次のことを行うことはできますか?
for arg, kwargs in arguments:
function(arg, **kwargs)
そんなこと知ってる
map(function, arguments)
と同等です
for argument in arguments:
function(argument)
map 関数を使用して次のことを行うことはできますか?
for arg, kwargs in arguments:
function(arg, **kwargs)
ラムダで次のことができます。
map(lambda a: function(a[0], **a[1]), arguments)
または、必要に応じて、ジェネレーター式またはリスト内包表記を使用できます。
(function(a, **k) for a, k in arguments)
[function(a, **k) for a, k in arguments]
Python 2 ではmap()
、リストを返します (したがって、リスト内包表記は同等です)。Python 3 では、map()
はジェネレーターです (したがって、ジェネレーター式で置き換えることができます)。
これを直接行う組み込みまたは標準ライブラリのメソッドはありません。ユースケースが特殊すぎる。
位置引数のみの場合は、次を使用できますitertools.starmap(fun, args)
。
指定されたシーケンスから取得した引数タプルで評価された関数から値が返される反復子を返します。
例:
from itertools import starmap
def f(i, arg):
print(arg * (i+1))
for _ in starmap(f, enumerate(["a", "b", "c"])):
pass
プリント:
a
bb
ccc
map は引数を個別の引数ではなく 1 つのタプルとして関数に渡すことを覚えておく必要があります。元の関数を変更できない場合は、ヘルパー関数を使用して呼び出すことができます。
def f(tup):
args, kwargs = tup
function(args, **kwargs)
map(f, arguments)