如何通过多组列表数值计算生成嵌套列表(list of lists)
问题:生成指定嵌套列表结果
给定三个嵌套列表E、I、Des和一个一维列表DesPro,需要通过计算式S = (E + I - Des) / DesPro生成目标嵌套列表。
给定数据
E = [[352,281,230,158], [55,36,57,287], [89,65,86,25], [182,236,243,82], [214,221,344,54], [1856,2537,2443,1523]] I = [[0,0,0,0], [11,0,0,0], [640,0,0,35], [0,679,0,0], [0,0,1281,95], [0,5988,0,0]] Des = [[18,70,52,72], [55,36,57,287],[89,65,86,25], [182,236,243,82], [214,221,344,54], [1856,2537,2443,1523]] DesPro = [25,49,92,250,264,2130]
其他参数
n = 6 # 嵌套列表的数量 t = 4 # 每个子列表的元素个数
尝试的代码
for i in range(n): for t in range(T): S = (E[i][t] + I[i][t] - Des[i][t]) / DesPro[i] print(S)
预期结果
[[13.36, 8.44, 7.12, 3.44], [0.22448979591836735, 0.0, 0.0, 0.0], [6.956521739130435, 0.0, 0.0, 0.3804347826086957], [0.0, 2.716, 0.0, 0.0], [0.0, 0.0, 4.8522727272727275, 0.35984848484848486], [0.0, 2.8112676056338026, 0.0, 0.0]]
实际输出
13.36 8.44 7.12 3.44 0.22448979591836735 0.0 0.0 0.0 6.956521739130435 0.0 0.0 0.3804347826086957 0.0 2.716 0.0 0.0 0.0 0.0 4.8522727272727275 0.35984848484848486 0.0 2.8112676056338026 0.0 0.0
解决方案
原代码仅逐个计算并打印单个数值,未构建嵌套列表结构。需要初始化空列表存储最终结果,外层循环创建子列表,内层循环计算元素并添加到子列表,最后将子列表加入结果列表。同时注意避免变量名冲突:原代码中参数t与内层循环变量t重复,需修改为其他名称(如j)。
修改后的代码:
n = 6 t = 4 result = [] # 初始化空列表存储最终嵌套结果 for i in range(n): sub_list = [] # 每次外层循环创建新的子列表 for j in range(t): value = (E[i][j] + I[i][j] - Des[i][j]) / DesPro[i] sub_list.append(value) result.append(sub_list) print(result)
运行后即可得到预期的嵌套列表结果。
内容的提问来源于stack exchange,提问作者Triz
相关产品推荐
相关产品推荐

