Python 按元素将函数列表映射到项目列表

Python 按元素将函数列表映射到项目列表,python,algorithm,mapping,Python,Algorithm,Mapping,我有3个函数(f1、f2和f3),每个函数都接受一个输入并返回一个str 这些功能以接收输入前程序中的设置确定的顺序存储在列表中。每次运行程序时,它们的顺序可能不同: # User A's run: funcs = [f1, f1, f2, f1, f3] # User B's run: funcs = [f3, f3, f2] 在程序执行期间,将生成与funcs的顺序相对应的输入列表。也就是说,列表inputs中每个索引的项目类型将是函数在funcs的相应索引处所期望的正确类型: # f1

我有3个函数(
f1
f2
f3
),每个函数都接受一个输入并返回一个
str

这些功能以接收输入前程序中的设置确定的顺序存储在列表中。每次运行程序时,它们的顺序可能不同:

# User A's run:
funcs = [f1, f1, f2, f1, f3]

# User B's run:
funcs = [f3, f3, f2]
在程序执行期间,将生成与
funcs
的顺序相对应的输入列表。也就是说,列表
inputs
中每个索引的项目类型将是函数在
funcs
的相应索引处所期望的正确类型:

# f1 expects int
# f2 expects float
# f3 expects str

funcs = [f1, f1, f2, f1, f3]
inputs = [0, 1, 3.14, 10, 'abc']
我需要将
funcs
映射到
inputs
元素,并连接结果字符串。目前,我通过使用
zip
解决此问题:

result = ''.join(f(i) for f, i in zip(func, inputs))

是否有其他方法可以实现这种类型的映射,或者
zip
是理想的方法?

我认为您可以导入FunctionType并将每个函数直接映射到每个输入(使用lambda列表进行了尝试,它确实有效):


拉链似乎是最有效的方式;您可以循环并执行funcs列表中的每个项目,但您的实现更干净。我认为唯一可能更好的方法是使用列表理解替换生成器,以提高效率。
zip
有效且清晰。人们会对什么是“理想”意见不一。@superbrain以什么方式理解列表更有效?生成器显然是内存高效的,但是
join()
在列表理解方面是否表现得更好?编辑:找到解释实现中显式转换的帖子。@另请参阅。
from types import FunctionType
funcs = [f1,f1,f2,f1,f3]
inputs = [0, 1, 3.14, 10, 'abc']
"".join(map(FunctionType.__call__, funcs, inputs))