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

Python新手求助:如何简化这段Bogo Sort代码?

简化Bogo Sort(随机排序)代码的方案

你的代码核心逻辑是通过同时随机打乱10个数组,直到其中一个和目标数组匹配,但存在大量重复冗余代码,以下是简化方案:

核心改进点

  • 用列表生成式替代10次重复的数组定义
  • 用循环批量处理数组打乱操作,避免重复调用random.shuffle
  • 用any()函数简化多数组匹配判断,替代冗长的or连接
  • 修正变量名(避免使用Python内置函数名sorted)和缩进问题

简化后的完整代码

import random

# 目标排序数组
target_array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
# 一次性创建10个初始候选数组
candidate_arrays = [[2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11] for _ in range(10)]
attempt_count = 0
is_sorted = False

while not is_sorted:
    # 批量打乱所有候选数组
    for arr in candidate_arrays:
        random.shuffle(arr)
    attempt_count += 1
    # 检查是否有候选数组匹配目标
    if any(arr == target_array for arr in candidate_arrays):
        is_sorted = True

# 输出结果
print(f"总尝试次数: {attempt_count}")
for i, arr in enumerate(candidate_arrays):
    print(f"候选数组{i}: {arr}")

细节说明

  1. 列表生成式:[[...] for _ in range(10)]一行就能创建10个相同初始值的数组,省去10行重复定义
  2. 批量打乱:通过for循环遍历candidate_arrays,对每个数组执行打乱,替代10次重复的random.shuffle调用
  3. any()函数:any(arr == target_array for arr in candidate_arrays)会逐个检查数组,只要有一个匹配就返回True,代码更简洁易读
  4. 变量规范:把原代码的sorted改为is_sorted(避免覆盖Python内置的sorted()函数),x改为attempt_count,语义更清晰
  5. 缩进修复:原代码的while循环、if语句存在缩进错误,简化后的代码严格遵循Python缩进规则

内容的提问来源于stack exchange,提问作者William Robinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:35:40