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

如何高效循环实现多组严格递增相邻列表的间隙数值查找?

解决多组严格递增列表间的间隙数字问题

针对你提到的多组严格递增且后一组元素全大于前一组的列表,要提取相邻列表之间的数字,最简洁高效的方式是配对相邻列表并生成区间数字,具体实现如下:

核心思路

把所有列表放在一个大列表中,遍历每一对相邻的列表组合:取前一个列表的最后一个元素+1作为起始值,后一个列表的第一个元素作为结束值,用range生成这个区间内的所有数字,最后收集所有间隙结果。

代码实现

循环写法

# 定义所有列表的集合
all_lists = [[1,2,3], [6,7,8], [10,11,12]]
gaps = []

# 遍历相邻的列表对
for prev_list, curr_list in zip(all_lists, all_lists[1:]):
    # 生成间隙数字列表
    gap = list(range(prev_list[-1] + 1, curr_list[0]))
    gaps.append(gap)

print(gaps)  # 输出: [[4, 5], [9]]

更简洁的列表推导式写法

如果追求代码紧凑,也可以用列表推导式一行搞定:

all_lists = [[1,2,3], [6,7,8], [10,11,12]]
gaps = [list(range(prev[-1]+1, curr[0])) for prev, curr in zip(all_lists, all_lists[1:])]

说明

  • zip(all_lists, all_lists[1:])会自动将相邻的两个列表配对,比如all_lists的第1个和第2个列表、第2个和第3个列表,以此类推。
  • 这种方法只需要一次遍历,时间复杂度为O(k + t)(k是列表的组数,t是所有间隙数字的总数),属于高效的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:25:23