如何用Python编写接收不定参数生成指定占位列表的lambda函数?
实现代码
def generate_list(s: int, idx: list, fixed_vals: list, *args): # 入参长度校验 if len(idx) != len(fixed_vals): raise ValueError("索引列表长度与固定值列表长度不匹配") required_arg_count = s - len(idx) if len(args) != required_arg_count: raise ValueError(f"需传入{required_arg_count}个可变参数,实际传入{len(args)}个") result = [None] * s # 填充固定值到对应索引位置 for pos, val in zip(idx, fixed_vals): result[pos] = val # 按顺序填充可变参数到剩余空位置 arg_idx = 0 for i in range(s): if result[i] is None: result[i] = args[arg_idx] arg_idx += 1 return result
调用示例
对应你给出的需求场景,调用方式如下:
# 自定义变量 t0 = 10 t1 = 20 t4 = 30 # 调用函数生成目标列表 output = generate_list(s=5, idx=[2,3], fixed_vals=[0.3, 0.7], t0, t1, t4) print(output) # 输出结果:[10, 20, 0.3, 0.7, 30]
说明
*args就是用来接收不定数量的可变参数的语法,你不需要提前定义参数数量,只要保证传入的可变参数个数等于s - len(idx)即可- 剩余空位置会按索引从小到大的顺序,依次匹配你传入的可变参数,你给出的示例中空位置索引是0、1、4,按顺序传入
t0、t1、t4即可正确匹配
内容的提问来源于stack exchange,提问作者will_cheuk
相关产品推荐
相关产品推荐

