Python判断整数列表是否升序的in_order函数实现问题排查
问题原因
- 你当前的逻辑使用了严格小于判断
nums[i-1] < nums[i],要求序列严格递增,而题目要求的升序允许非递减的情况(相邻元素相等也符合要求),因此遇到有重复元素的有序列表就会判定失败。
修改方案
把严格小于号<替换为小于等于号<=即可,修改后的完整代码如下:
def in_order(nums): return all(nums[i-1] <= nums[i] for i in range(1, len(nums))) if __name__ == '__main__': # 测试乱序用例 nums1 = [5, 6, 7, 8, 3] if in_order(nums1): print('In order') else: print('Not in order') # 测试无重复有序用例 nums2 = [5, 6, 7, 8, 10] if in_order(nums2): print('In order') else: print('Not in order') # 测试含重复有序用例 nums3 = [5, 5, 6, 6, 6, 7, 8, 10, 10, 10, 10] if in_order(nums3): print('In order') else: print('Not in order')
运行结果
- 第一个测试用例输出
Not in order - 第二个测试用例输出
In order - 第三个包含重复元素的有序测试用例输出
In order,完全符合要求,且未使用sorted()或sort()方法。
内容的提问来源于stack exchange,提问作者JewishEggs
相关产品推荐
相关产品推荐

