Python递归实现嵌套列表单元素替换的全量结果生成函数开发
解决方案
直接上实现代码:
def generate_replacements(lst, replacement): results = [] for idx, elem in enumerate(lst): # 复制原列表,防止修改原始数据 current_copy = lst.copy() if isinstance(elem, list): # 递归处理子列表,拿到子列表的所有单元素替换结果 sub_results = generate_replacements(elem, replacement) # 把每个替换后的子列表放回原位置,生成完整新列表 for sub in sub_results: temp_copy = current_copy.copy() temp_copy[idx] = sub results.append(temp_copy) else: # 普通元素直接替换 current_copy[idx] = replacement results.append(current_copy) return results
测试验证
用你给出的输入测试:
test_input = ['a', 'b', ['c', ['e', 'f']]] output = generate_replacements(test_input, 1) for item in output: print(item)
输出结果和预期完全一致:
[1, 'b', ['c', ['e', 'f']]] ['a', 1, ['c', ['e', 'f']]] ['a', 'b', 1] ['a', 'b', [1, ['e', 'f']]] ['a', 'b', ['c', 1]] ['a', 'b', ['c', [1, 'f']]] ['a', 'b', ['c', ['e', 1]]]
递归逻辑说明
- 遍历每个元素:对输入列表的每一个元素逐一处理,确保每个可能的替换位置都被覆盖。
- 区分元素类型:
- 若当前元素是普通值:直接替换成目标值,生成新列表加入结果。
- 若当前元素是子列表:递归调用函数处理这个子列表,得到子列表所有单元素替换后的版本,再把这些子列表替换回原位置,生成完整的新列表加入结果。
- 复制列表:每次处理都复制原列表(或子列表),避免修改原始数据,保证每个结果都是独立的新列表,不会互相干扰。
内容的提问来源于stack exchange,提问作者Mr Saltine
相关产品推荐
相关产品推荐

