Sympy中如何使用列表推导式遍历多层嵌套列表?
Sympy场景下多层嵌套列表的遍历替换实现
不需要编写多行重复代码,根据嵌套列表的层数是否固定,可选择以下两种实现方案:
方案1:嵌套层数固定为2层(极简写法)
直接用双层列表推导遍历即可,不需要按索引逐个编写重复的推导逻辑:
from sympy import * var('ax bx') ans_ab = [[ax], [bx]] myValue = {ax:5, bx:7} # 直接双层遍历,和逐行写索引的运行结果完全一致 res = [[ans.subs(myValue) for ans in sub_list] for sub_list in ans_ab] print(res) # 输出:[[5], [7]]
方案2:适配任意层数的嵌套列表(通用递归实现)
如果嵌套层数不固定,用递归逻辑实现通用的嵌套替换函数,不管多少层嵌套都能自动遍历处理:
from sympy import * def nested_subs(nested_list, subs_dict): return [ nested_subs(item, subs_dict) if isinstance(item, list) else item.subs(subs_dict) for item in nested_list ]
使用示例:
# 测试3层嵌套 var('ax bx cx dx ex') ans_multi_layer = [[ax, [cx, dx]], [bx, [ex]]] myValue = {ax:1, bx:2, cx:3, dx:4, ex:5} res = nested_subs(ans_multi_layer, myValue) print(res) # 输出:[[1, [3, 4]], [2, [5]]]
内容的提问来源于stack exchange,提问作者mrrclb46z
相关产品推荐
相关产品推荐

