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

仅使用列表和循环实现monotonic function检测的Python实现问题

sequence_monotonicity函数正确实现

实现思路

预先初始化4个布尔标记位,默认全部为True,后续遍历所有相邻元素对,只要任意一对不满足对应单调性条件,就把对应标记位设为False,遍历完成后将4个标记位按要求顺序组成列表返回即可,完全符合仅用列表和循环、不导入第三方库、不使用all/any内置函数的要求。

正确代码

def sequence_monotonicity(l):
    # 四个标记位分别对应<=、<、>=、>四个条件,初始默认全部满足
    flag1 = True  # 所有相邻a(n-1) <= a(n)
    flag2 = True  # 所有相邻a(n-1) < a(n)
    flag3 = True  # 所有相邻a(n-1) >= a(n)
    flag4 = True  # 所有相邻a(n-1) > a(n)
    
    # 序列长度小于2时无相邻元素,所有条件均满足
    if len(l) < 2:
        return [flag1, flag2, flag3, flag4]
    
    for i in range(1, len(l)):
        prev = l[i-1]
        curr = l[i]
        # 不满足<=则第一个标记位设为False
        if prev > curr:
            flag1 = False
        # 不满足<则第二个标记位设为False
        if prev >= curr:
            flag2 = False
        # 不满足>=则第三个标记位设为False
        if prev < curr:
            flag3 = False
        # 不满足>则第四个标记位设为False
        if prev <= curr:
            flag4 = False
    
    return [flag1, flag2, flag3, flag4]

测试验证

提供的三个测试用例运行结果完全符合预期:

  • sequence_monotonicity([1,2,3,4,5,6]) 返回 [True, True, False, False]
  • sequence_monotonicity([1,2,2,3]) 返回 [True, False, False, False]
  • sequence_monotonicity([1,0,-1,1]) 返回 [False, False, False, False]

原代码错误原因

  1. 把四个条件的判断结果全部追加到了同一个x列表中,每次调用true_false_checker时判断的是x中所有历史结果是否存在False,判断逻辑完全混乱
  2. 每次遍历相邻元素时都往结果列表z中追加4个布尔值,最终返回的z长度为4*(序列长度-1),而不是要求的固定长度4,自然不符合输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:45:03