単項関数のシーケンスで反復可能なから項目を変換
-
18-09-2019 - |
質問
私は頻繁に自分自身が同じ長さの一連の単項関数のシーケンスを適用する必要が見つけます。私の最初の考えはmap()
に行くことですが、これは唯一のシーケンス内のすべての項目に適用される単一の関数を取ります。
例えば次のコードで、Iは各str.upper()
の2番目の項目に最初の項目にint
、及びa
を適用したいです。 「transform
は、」私は後だ効果のプレースホルダーです。
COLS = tuple([transform((str.upper, int), a.split(",")) for a in "pid,5 user,8 program,28 dev,10 sent,9 received,15".split()])
きちんとこのような変換を行うことができますいくつかの標準ライブラリ、または他の素敵な実装がありますか?
解決
何を...について:
def transform(functions, arguments):
return [f(a) for f, a in zip(functions, arguments)]
他のヒント
>>> s="pid,5 user,8 program,28 dev,10 sent,9 received,15".split()
>>> [ ( m.upper(),int(n)) for m, n in [i.split(",") for i in s ] ]
[('PID', 5), ('USER', 8), ('PROGRAM', 28), ('DEV', 10), ('SENT', 9), ('RECEIVED', 15)]
私は現在、これを使用しています:
def transform(unaries, iterable):
return map(lambda a, b: a(b), unaries, iterable)
所属していません StackOverflow