如何在Python 3中找出嵌套列表的差异值并计算差值?
嘿,这问题不难搞定!我来给你一步步说明怎么实现两个嵌套列表的差异值计算~
核心思路
我们需要逐个对比两个嵌套列表中对应位置的元素:
- 先遍历每一对子列表(也就是两个列表的行)
- 再遍历每行里的每一对元素
- 只要两个元素不相等,就计算
list_1元素 - list_2元素,把这个差值收集到结果列表里 - 最后输出结果列表就行啦
基础版代码实现
用嵌套循环的方式,逻辑清晰,适合新手理解:
# 第一个示例测试 list_1 = [[4,9,2],[3,5,7],[8,1,5]] list_2 = [[4,9,2],[3,5,7],[8,1,6]] result = [] # 配对两个列表的子列表 for sub_list1, sub_list2 in zip(list_1, list_2): # 配对子列表里的每个元素 for val1, val2 in zip(sub_list1, sub_list2): # 只处理不相等的元素 if val1 != val2: result.append(val1 - val2) print(result) # 输出:[-1]
简洁版(列表推导式)
如果喜欢更简洁的写法,Python的列表推导式可以一行搞定,逻辑和上面完全一致:
list_1 = [[4,9,2],[3,5,7],[8,1,5]] list_2 = [[4,9,2],[3,5,7],[8,1,6]] result = [val1 - val2 for sub1, sub2 in zip(list_1, list_2) for val1, val2 in zip(sub1, sub2) if val1 != val2] print(result) # 输出:[-1]
测试第二个示例
把代码套用到你给的第二个例子里,结果完全符合预期:
list_1 = [[3, 6, 7], [4, 9, 9], [7, 6, 9]] list_2 = [[6, 7, 2], [1, 5, 9], [8, 3, 4]] result = [val1 - val2 for sub1, sub2 in zip(list_1, list_2) for val1, val2 in zip(sub1, sub2) if val1 != val2] print(result) # 输出:[-3, -1, 5, 3, 4, -1, 3, 5]
小提醒
这里默认两个嵌套列表的结构是完全一致的(行数相同,每行的元素数也相同)。如果遇到结构不一致的情况,你可以额外加判断来处理长度差异,但从你的示例来看,应该不需要考虑这种情况~
内容的提问来源于stack exchange,提问作者user9342203
相关产品推荐
相关产品推荐

