この単純なワンライナーを使用すると思います:
import itertools
print list(itertools.imap(pow, [1, 2, 3], itertools.repeat(2)))
アップデート:
また、便利な解決策よりも面白い解決策を思いつきました。Python3では...
リテラルが意味するという事実から利益を得ている、美しい構文糖衣です。Ellipsis
これは の修正版でpartial
、左端と右端の間の位置引数を省略できるようになっています。唯一の欠点は、省略記号を引数として渡すことができなくなったことです。
import itertools
def partial(func, *args, **keywords):
def newfunc(*fargs, **fkeywords):
newkeywords = keywords.copy()
newkeywords.update(fkeywords)
return func(*(newfunc.leftmost_args + fargs + newfunc.rightmost_args), **newkeywords)
newfunc.func = func
args = iter(args)
newfunc.leftmost_args = tuple(itertools.takewhile(lambda v: v != Ellipsis, args))
newfunc.rightmost_args = tuple(args)
newfunc.keywords = keywords
return newfunc
>>> print partial(pow, ..., 2, 3)(5) # (5^2)%3
1
>>> print partial(pow, 2, ..., 3)(5) # (2^5)%3
2
>>> print partial(pow, 2, 3, ...)(5) # (2^3)%5
3
>>> print partial(pow, 2, 3)(5) # (2^3)%5
3
したがって、元の質問の解決策は、このバージョンの部分的なものになりますlist(map(partial(pow, ..., 2),xs))