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
相关产品推荐
相关产品推荐

