如何调用带参数的函数列表?含列表推导式实现方法咨询
调用带参数的函数组及列表推导式用法
一、调用一组带参数的函数
1. 每个函数对应不同参数
如果你的函数列表和参数列表是一一对应的,用zip()配合循环就能逐个调用:
# 示例函数 def add(a, b): return a + b def multiply(a, b): return a * b def subtract(a, b): return a - b # 函数列表与对应参数列表 funcs = [add, multiply, subtract] params = [(2, 3), (4, 5), (10, 4)] # 循环调用并收集结果 results = [] for func, args in zip(funcs, params): results.append(func(*args)) # *用于解包参数元组 print(results) # 输出: [5, 20, 6]
2. 所有函数使用相同参数
要是所有函数都用同一组参数,直接遍历函数列表调用即可:
common_args = (3, 6) results = [] for func in funcs: results.append(func(*common_args)) print(results) # 输出: [9, 18, -3]
二、用列表推导式调用带参数的函数列表
列表推导式能把上面的循环简化成一行代码,更简洁高效。
1. 对应不同参数的情况
结合zip()把函数和参数配对,直接推导:
results = [func(*args) for func, args in zip(funcs, params)] print(results) # 输出: [5, 20, 6]
2. 相同参数的情况
直接遍历函数列表并传入统一参数:
results = [func(*common_args) for func in funcs] print(results) # 输出: [9, 18, -3]
处理关键字参数
如果函数需要关键字参数,用**解包字典即可:
def greet(name, greeting="Hello"): return f"{greeting}, {name}!" def introduce(name, age): return f"I'm {name}, {age} years old." funcs = [greet, introduce] kwargs_list = [{"name": "Alice"}, {"name": "Bob", "age": 25}] results = [func(**kwargs) for func, kwargs in zip(funcs, kwargs_list)] print(results) # 输出: ["Hello, Alice!", "I'm Bob, 25 years old."]
内容的提问来源于stack exchange,提问作者bluerose
相关产品推荐
相关产品推荐

