如何遍历可调用对象列表并执行每个对象,将结果存入列表?
遍历可调用对象列表并收集执行结果的方法
嘿,这个需求其实很常见!假设你用的是Python(毕竟这类场景在Python里特别典型),我给你整理了几种实用的实现方式,按需选择就行:
1. 列表推导式(最简洁推荐)
这是Python里最受欢迎的写法,一行搞定,可读性也强:
# 先定义几个可调用对象示例 def add_one(x): return x + 1 double = lambda x: x * 2 # 你的*可调用对象*列表,这里假设每个函数接收相同参数 callables = [add_one, double] input_value = 5 # 执行每个对象并收集结果 results = [func(input_value) for func in callables] print(results) # 输出: [6, 10]
要是每个可调用对象需要的参数不一样,也可以给每个函数配对应的参数组:
# 列表里存(可调用对象, 参数)的元组 callables_with_args = [(add_one, 5), (double, 3)] results = [func(arg) for func, arg in callables_with_args] print(results) # 输出: [6, 6]
2. 普通for循环(适合需要中间操作的场景)
如果执行过程中需要额外逻辑(比如错误捕获、打印日志),用普通循环会更灵活:
callables = [add_one, double] input_value = 5 results = [] for func in callables: try: result = func(input_value) results.append(result) print(f"执行{func.__name__}成功,结果: {result}") except Exception as e: print(f"执行{func.__name__}出错: {e}") results.append(None) # 出错时可以存个默认值占位 print(results)
3. 使用map函数(函数式编程风格)
如果你偏爱函数式写法,map也能实现,不过需要用lambda来适配参数:
callables = [add_one, double] input_value = 5 # map会把每个函数应用到输入值上,最后转成列表 results = list(map(lambda func: func(input_value), callables)) print(results) # 输出: [6, 10]
小提醒
- 一定要确保列表里的每个元素都是可调用对象(比如函数、lambda表达式、实现了
__call__方法的类实例等),不然会触发TypeError。 - 如果不同可调用对象的参数需求不同,一定要对应好参数传递逻辑,避免参数不匹配的错误。
内容的提问来源于stack exchange,提问作者Gnarlodious
相关产品推荐
相关产品推荐

