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

嵌套列表相邻元素modulo减法求和及相邻校验实现方法

嵌套列表相邻元素绝对值差求和实现方案

核心逻辑说明

我们需要实现三个核心能力:指定位置元素取值、相邻关系校验、绝对值差累加,以下是具体实现方法。

代码实现(Python)

场景1:原列表未被打乱,顺序为原始存储顺序

def calc_adjacent_abs_sum(nested_list, target_index):
    total = 0
    # 按步长2遍历,匹配示例中每两个相邻子列表为一组的逻辑
    for i in range(0, len(nested_list), 2):
        # 校验下一个子列表存在,避免索引越界
        if i + 1 >= len(nested_list):
            break
        # 相邻关系校验:两个子列表在原列表的索引差为1
        if (i + 1) - i != 1:
            continue
        # 取指定位置元素计算绝对值差并累加
        val_a = nested_list[i][target_index]
        val_b = nested_list[i+1][target_index]
        total += abs(val_a - val_b)
    return total

# 测试示例
l = [[1,10],[2,20],[3,5],[4,40]]
# 取子列表索引为1的元素计算
result = calc_adjacent_abs_sum(l, target_index=1)
print(result) # 输出结果为45,对应|10-20| + |5-40| = 10 +35

场景2:列表后续被排序/打乱,需基于原始索引校验相邻关系

如果嵌套列表经过排序、打乱等操作改变了原有顺序,需要先绑定原始索引再做校验:

# 给每个子列表绑定原始索引
l_with_origin_idx = [(idx, item) for idx, item in enumerate(l)]

def calc_adjacent_abs_sum_with_origin_idx(nested_list_with_idx, target_index):
    total = 0
    for i in range(0, len(nested_list_with_idx), 2):
        if i + 1 >= len(nested_list_with_idx):
            break
        origin_idx1, item1 = nested_list_with_idx[i]
        origin_idx2, item2 = nested_list_with_idx[i+1]
        # 基于原始索引校验相邻关系
        if abs(origin_idx1 - origin_idx2) != 1:
            continue
        total += abs(item1[target_index] - item2[target_index])
    return total

自定义调整说明

如果你需要计算所有连续相邻对的差值和(比如4个元素的列表计算[0&1、1&2、2&3]三组),只需把遍历的步长改为1,调整循环逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:57:00