我有以下 Python 代码:
data = ['1', '4.6', 'txt']
funcs = [int, float, str]
如何将相应索引中的数据作为函数的参数来调用每个函数? 现在我正在使用代码:
result = []
for i, func in enumerate(funcs):
result.append(func(data[i]))
map(funcs, data) 不适用于函数列表(是否有内置函数可以更简单地做到这一点?
最佳答案
你可以 use zip
* 将多个序列组合在一起:
zip([a,b,c,...], [x,y,z,...]) == [(a,x), (b,y), (c,z), ...]
然后您可以迭代这个新序列并使每个函数应用于相应的数据。由于您只想将它们收集到一个列表中,list comprehension比 for 循环好得多:
result = [f(x) for f, x in zip(funcs, data)]
注意:* 使用 itertools.izip
如果您使用的是 Python 2.x 并且列表很长。)
关于python - 如何将数据列表映射到函数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848829/