You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在嵌套列表中对比子列表指定索引元素并实现追加逻辑?

问题分析与解决方案

我看了你的代码和问题描述,核心问题确实是你没正确引用到前一个子列表的数据,咱们来一步步捋清楚哪里错了,以及怎么改:

错误点拆解

  • 你用for sublists in list遍历的时候,sublists[1-1]其实取的是当前子列表的第0个元素(也就是'1046'、'1047'这些),而不是前一个子列表的同索引元素,这完全不是你要对比的内容,所以每次判断都是不相等,自然全追加0。
  • 另外,else分支里的sublists[2]也有问题:初始子列表只有2个元素,索引到1就结束了,这行代码其实会直接触发索引越界错误(你当前的结果没报错,是因为所有判断都走了if分支)。

修正后的代码

要拿到前一个子列表,得用带索引的循环,这样能明确获取当前元素的位置,进而找到前一个元素。具体代码如下:

original_list = [['1046', '10'], ['1047','12'], ['1047','12']]
for i in range(len(original_list)):
    current_sublist = original_list[i]
    # 第一个子列表没有前一个,直接追加0
    if i == 0:
        current_sublist.append(0)
        continue
    prev_sublist = original_list[i-1]
    # 对比当前和前一个子列表的[0]元素
    if current_sublist[0] != prev_sublist[0]:
        current_sublist.append(0)
    else:
        # 求和两个子列表的[1]元素,转成float计算
        sum_velocity = float(current_sublist[1]) + float(prev_sublist[1])
        current_sublist.append(sum_velocity)

print(original_list)

运行结果

执行这段代码后,得到的结果完全符合你的期望:

[['1046', '10', 0], ['1047', '12', 0], ['1047', '12', 24.0]]

如果想要整数形式的24,可以把求和结果转成int,比如sum_velocity = int(float(current_sublist[1]) + float(prev_sublist[1]))。

内容的提问来源于stack exchange,提问作者Ellira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:10:05