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

Python代码问题:如何让循环生成10个不同随机列表而非重复添加同一列表

问题解决:生成10个不同的随机列表

你的代码之所以会重复添加同一个列表,核心问题有两个:

  • 复用了全局的winner列表对象,每次往results里加的都是同一个列表的引用,所有元素指向的都是同一个内存地址的列表。
  • 逻辑顺序颠倒:先把空的winner加到results,再去填充它,导致第一次添加的是空列表,后续循环里winner已经是满的,不会再生成新内容,所以所有元素都一模一样。

只需要修改dice()方法里的这几处:

修改步骤

  • 把winner的定义移到外层while循环内部,每次循环都新建一个空列表,确保每个待添加的列表都是独立的对象。
  • 调换操作顺序:先把当前winner填充到指定长度,再将它追加到results中。
  • (可选但推荐)把results改成方法内的局部变量,避免全局变量带来的意外;同时避免用list作为变量名,和Python内置类型冲突。

修改后的完整代码

from random import choice

# 重命名变量,避免和内置list冲突
my_list = [1, 2, 3, 4, "a", "b", "c", "d"]
ticket = [1, 2]

class Die: 
    def __init__(self, a_list):
        self.a_list = a_list
    
    def dice(self):
        results = []  # 改为方法内局部变量
        while len(results) < 10:
            winner = []  # 每次循环新建空列表
            # 先填充当前winner到2个元素
            while len(winner) < 2:
                die = choice(self.a_list)
                winner.append(die)
            # 填充完成后再添加到results
            results.append(winner)
        print(results)

my_dice = Die(my_list)
my_dice.dice()

这样运行后,results里就会是10个独立的随机列表,每个列表都是从指定集合里随机选2个元素生成的。

内容的提问来源于stack exchange,提问作者Axel Samuelson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:18:34