如何实现连续整数分组?附相关Python代码片段
连续整数分组的Python实现方案
嘿,我来帮你搞定这个连续整数分组的问题!原代码的逻辑有点绕,还存在索引越界的隐藏bug,而且用字典存储分组的方式效率不高、容易出错。我给你一个更清晰可靠的实现方案,一步步帮你实现需求:
完整实现代码
ints = [1,2,3,4,5,6,8,9,10,11,14,34,14,35,16,18,39,10,29,30,14,26,64,27,48,65] # 第一步:去重并排序,确保整数按从小到大排列且无重复 unique_sorted_ints = sorted(set(ints)) # 第二步:初始化分组列表,用于存储最终的连续整数组 groups = [] # 第三步:遍历处理每个整数,完成分组 for num in unique_sorted_ints: # 如果还没有分组,或者当前数和最后一组的最后一个数不连续,就新建一个组 if not groups or num != groups[-1][-1] + 1: groups.append([num]) else: # 如果连续,就把当前数加入最后一个组 groups[-1].append(num) # 输出分组结果 print("连续整数分组结果:") for group in groups: print(group)
代码解释
- 去重排序:用
sorted(set(ints))一步完成去重和排序,比先排序再转集合更高效——集合自动去重,排序保证整数按从小到大的顺序排列。 - 分组逻辑:
- 用列表
groups存储所有连续整数组,结构简单直观 - 遍历每个整数时,只需要和最后一组的末尾元素对比:
- 如果不连续(或者还没开始分组),就新建一个组
- 如果连续,直接追加到最后一组末尾,避免了原代码中遍历字典的冗余操作
- 用列表
运行结果
执行代码后,会输出以下分组:
[1, 2, 3, 4, 5, 6] [8, 9, 10, 11] [14] [16] [18] [26, 27] [29, 30] [34, 35] [39] [48] [64, 65]
内容的提问来源于stack exchange,提问作者Stephen K
相关产品推荐
相关产品推荐

