变换为一元函数序列的迭代项目
-
18-09-2019 - |
题
我经常发现自己需要的一元函数的序列适用于相同长度的序列。我首先想到的是去与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()])
有一些标准库,或其他不错的实现,可以进行改造,如本整齐?
解决方案
关于...:
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