如何从表示决策树可选路径的2D列表生成所有对应1D路径列表
实现方案
核心思路
你需要的是各层可选值的笛卡尔积,使用Python标准库itertools.product即可实现,无需用到排列函数。
具体代码实现
import itertools def generate_all_paths(pattern): # 预处理每一层:非列表类型视为固定值,包装为单元素列表 processed = [] for item in pattern: if isinstance(item, list): processed.append(item) else: processed.append([item]) # 求笛卡尔积,返回列表格式的结果 return [list(path) for path in itertools.product(*processed)]
使用示例
示例1:方向标识场景
L = "L" R = "R" pattern = [[L, R], L] print(generate_all_paths(pattern))
输出结果:
[['L', 'L'], ['R', 'L']]
示例2:混合多数据类型场景
# 模式包含布尔、整数、字符串可选值 pattern = [[True, False], 2024, ["pass", "fail"]] print(generate_all_paths(pattern))
输出结果:
[[True, 2024, 'pass'], [True, 2024, 'fail'], [False, 2024, 'pass'], [False, 2024, 'fail']]
方案说明
- 自动兼容任意数据类型的可选值,包括布尔值、整数、字符串、自定义对象等,无需额外适配
- 支持任意长度的模式数组,匹配N层决策树的使用场景
- 生成的路径顺序和各层可选值的顺序完全对应,可直接用于字典键的生成逻辑
内容的提问来源于stack exchange,提问作者Jkind9
相关产品推荐
相关产品推荐

