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

如何检查列表中所有整数是否连续?程序实现需求问询

判断数字列表是否连续递增1的解决方案

我来帮你搞定这个判断列表数字是否连续递增1的问题!你提到想用enumerate来实现,这完全可行,下面是具体的代码实现和解释:

基于enumerate的实现代码

def is_consecutive(nums):
    # 处理空列表或单个元素的边界情况
    if len(nums) <= 1:
        return "YES"
    
    # 从第二个元素开始遍历,索引从1开始
    for idx, num in enumerate(nums[1:], start=1):
        # 检查当前元素是否等于前一个元素加1
        if num != nums[idx - 1] + 1:
            return "NO"
    
    # 所有元素都符合条件
    return "YES"

代码逻辑解释

  • 边界处理:如果列表长度小于等于1,直接返回"YES"——毕竟单个元素没有“前一个元素”,自然不存在不连续的问题;空列表同理(如果你的需求里空列表需要特殊处理,可以修改这部分逻辑)。
  • 遍历对比:用enumerate(nums[1:], start=1)遍历从第二个元素开始的所有项,同时让索引从1开始,这样可以直接通过nums[idx-1]获取当前元素的前一个元素,对比是否满足当前元素 = 前一个元素 + 1。
  • 提前终止:一旦发现不符合条件的元素,立刻返回"NO",不用继续遍历,提升效率。

测试用例验证

你可以用你给出的例子测试:

  • 正确连续的情况:
    print(is_consecutive([3, 4, 5]))  # 输出 "YES"
    print(is_consecutive([0, 1, 2, 3, 4, 5]))  # 输出 "YES"
    
  • 不连续的情况:
    print(is_consecutive([9, 1, 0]))  # 输出 "NO"
    print(is_consecutive([5, 5]))  # 输出 "NO"
    print(is_consecutive([3, 2, 4]))  # 输出 "NO"
    

更简洁的写法(可选)

如果你喜欢更紧凑的代码,可以用all()函数来实现,逻辑是一样的:

def is_consecutive(nums):
    return "YES" if len(nums) <= 1 or all(nums[i] == nums[i-1] + 1 for i in range(1, len(nums))) else "NO"

all()会检查生成器表达式里的所有条件是否都为真,只要有一个不满足就返回False,对应返回"NO"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:40:26