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

Python掷骰子计数作业代码如何优化效率与简化实现?

首先说下原有代码存在的可优化空间:

  • 循环内反复调用count()、remove()方法,每次都要完整遍历列表,数据量变大后效率会明显降低
  • 过程中直接修改了原始掷骰结果列表,若后续需要复用原始数据会受影响
  • 补0插入的逻辑比较绕,可读性不高

下面给两种优化实现,都完全符合输出要求:

方案1:用标准库Counter实现,代码最简洁

Counter是Python专门做频次统计的工具,逻辑极简:

from random import randint
from collections import Counter

# 生成10次掷骰结果
rolls = [randint(1, 6) for _ in range(10)]
# 直接统计每个点数的出现次数
count_result = Counter(rolls)

# 按要求输出
print(f"Your rolls: {rolls}")
print("Number of rolls:")
for num in range(1, 7):
    # 没出现的点数默认返回0
    print(f"{num} -> {count_result.get(num, 0)}")

方案2:纯基础列表实现,无额外依赖,效率最高

如果作业要求不能用collections模块,用这个版本,只需要遍历一次掷骰结果就能完成统计,时间复杂度O(n):

from random import randint

# 生成10次掷骰结果
rolls = [randint(1, 6) for _ in range(10)]
# 初始化长度为6的计数列表,索引0对应点数1的次数,初始全为0
roll_count = [0] * 6

# 单次遍历完成统计
for num in rolls:
    roll_count[num - 1] += 1

# 按要求输出
print(f"Your rolls: {rolls}")
print("Number of rolls:")
for num in range(1, 7):
    print(f"{num} -> {roll_count[num - 1]}")

两种优化方案都保留了原始的掷骰结果列表,逻辑更清晰,执行效率远高于原有实现,哪怕后续需要模拟上万次掷骰也能快速完成。

内容的提问来源于stack exchange,提问作者João Pedro Checco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:02