0

我经常发现自己需要将一系列一元函数应用于相同长度的序列。我的第一个想法是使用map(),但是这只需要一个函数即可应用于序列中的所有项目。

例如,在下面的代码中,我希望应用str.upper()到每个 中的第一项和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()])

是否有一些标准库或其他很好的实现可以巧妙地执行这样的转换?

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 回答