假设我有一个这样的列表:
[1, 2, 3, 4]
这样的功能列表:
[a, b, c, d]
有没有简单的方法来获得此输出?类似于zip
,但有函数和参数?
[a(1), b(2), c(3), d(4)]
答案 0 :(得分:10)
使用zip()
和列表推导将每个函数应用于其配对参数:
arguments = [1, 2, 3, 4]
functions = [a, b, c, d]
results = [func(arg) for func, arg in zip(functions, arguments)]
演示:
>>> def a(i): return 'function a: {}'.format(i)
...
>>> def b(i): return 'function b: {}'.format(i)
...
>>> def c(i): return 'function c: {}'.format(i)
...
>>> def d(i): return 'function d: {}'.format(i)
...
>>> arguments = [1, 2, 3, 4]
>>> functions = [a, b, c, d]
>>> [func(arg) for func, arg in zip(functions, arguments)]
['function a: 1', 'function b: 2', 'function c: 3', 'function d: 4']
答案 1 :(得分:1)
arguments = [1, 2, 3, 4]
functions = [a, b, c, d]
def process(func, arg):
return func(arg)
results = map(process, functions, arguments)
定义一个函数process
来完成工作,并使用map
来迭代functions
及其arguments