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

Python 复合条件编写方法咨询:新手如何简化条件判断代码?

红蓝白排序需求Python极简实现

这是经典的荷兰国旗排序问题,两种实现方式分别适配不同的规范要求:

方式1:符合O(1)空间复杂度要求的三指针实现

满足程序规范里的原地修改、单次遍历要求,无额外空间开销:

def sort_red_white_blue(items):
    left, mid, right = 0, 0, len(items)-1
    while mid <= right:
        if items[mid] == "红":
            items[left], items[mid] = items[mid], items[left]
            left += 1
            mid += 1
        elif items[mid] == "蓝":
            items[mid], items[right] = items[right], items[mid]
            right -= 1
        else:
            mid += 1
  • 你可以根据实际存储的标识替换红/白/蓝的判断值,比如改为0/1/2的数值标识
  • 直接在原输入列表上修改,不需要返回值
  • 时间复杂度O(n),仅需一次遍历即可完成排序

方式2:极简写法,适合快速验证场景

代码更短可读性更高,适合对空间复杂度无强制要求的场景:

def sort_red_white_blue_short(items):
    items[:] = ["红"]*items.count("红") + ["白"]*items.count("白") + ["蓝"]*items.count("蓝")
  • 核心逻辑仅1行,新手也能快速理解和修改
  • 时间复杂度O(n),会额外占用与输入等长的内存空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:18:05