0

単項関数のシーケンスを同じ長さのシーケンスに適用する必要があることがよくあります。私の最初の考えは、 を使用することですがmap()、これは、シーケンス内のすべてのアイテムに適用される単一の関数のみを必要とします。

たとえば、次のコードでは、各str.upper()の最初のアイテムとint2 番目のアイテムに適用したいと考えています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()])

このような変換をきちんと実行できる標準ライブラリ、または他の優れた実装はありますか?

4

3 に答える 3

3

どうでしょう...:

def transform(functions, arguments):
  return [f(a) for f, a in zip(functions, arguments)]
于 2010-02-05T02:57:35.583 に答える
1
>>> 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)]
于 2010-02-05T02:56:03.123 に答える
1

私は現在これを使用しています:

def transform(unaries, iterable):
    return map(lambda a, b: a(b), unaries, iterable)
于 2010-02-05T03:15:33.047 に答える