-1

map で他の引数を指定できますか?

たとえば、次のコードがあります。

def f(a, b):
    return a + b
l = [1, 2, 3]
ll = map(f, l)

mapの各要素がllの 1 つの要素と指定された引数の合計になるように、上記に引数を与えるにはどうすればよいlですか?

たとえば、のようなものを使用できれば、結果としてmap(f(2,), l)得られます。[3, 4, 5]

リスト内包表記または for ループで同じ結果が得られることはわかっていますが、何らかの方法でそれが可能かどうかを知りたいだけですmap

4

5 に答える 5

5

mapそれ自体は、それを行う方法を直接提供しません。functools.partialただし、静的引数を事前に指定するために使用することで実行できます。

>>> def add(x, y):
...     return x+y
>>> map(functools.partial(add, y=10), [1, 2, 3])
[11, 12, 13]

ただし、@jamylak がコメントで示唆したように、これを行う理由はほとんどありません。結果を保存したくない場合は、通常の for ループを実行してください。

for item in [1, 2, 3]:
   add(item, 10)
于 2012-10-30T06:37:57.530 に答える
3

部分的な適用functools.partialを実装するために使用される を探しています:

ll = map(functools.partial(f, 2), l)

多くの場合、リスト内包表記またはジェネレーター式の方が読みやすいことに注意してください。

ll = [f(2, x) for x in l]
于 2012-10-30T06:41:10.833 に答える
1

これには使用しないでくださいmap()が、リスト内包表記を使用してください。

new_lst = [f(x, other_value) for x in lst]

別のオプションはラムダです。しかし、それをしないでください:

new_lst = map(lambda x: map(x, other_value), lst)
于 2012-10-30T06:35:25.467 に答える
0

あなたも考慮することができます:-

def f(a):
    return a + b
l = [1, 2, 3]
b = 2
ll = map(f,l)

print ll
于 2012-10-30T06:58:27.290 に答える