如何检查列表中所有整数是否连续?程序实现需求问询
判断数字列表是否连续递增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
相关产品推荐
相关产品推荐

