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

Python生成n个随机10数列表重复问题求助

问题分析与解决思路

这种情况几乎都是因为你反复将同一个列表对象添加到了ran中,而不是每次生成新的独立列表。

举个典型的错误代码例子(应该和你的代码逻辑类似):

import random

n = 5
ran = []
temp_list = []  # 只创建了一个列表对象

for _ in range(n):
    temp_list.clear()  # 清空同一个列表
    for _ in range(10):
        temp_list.append(random.randint(1, 100))
    ran.append(temp_list)  # 每次添加的都是同一个列表的引用

因为列表是Python中的可变对象,ran里存储的都是temp_list的引用,而不是列表的副本。当你最后一次修改temp_list后,所有引用指向的都是这个最终状态的列表,所以你看到的全是最后一个列表的重复。

两种修复方案

方案1:每次循环内新建列表

把列表的创建放到循环内部,确保每次生成的都是全新的列表对象:

import random

n = 5
ran = []

for _ in range(n):
    new_list = []  # 每次循环都创建新列表
    for _ in range(10):
        new_list.append(random.randint(1, 100))
    ran.append(new_list)

方案2:用列表推导式简化代码

这是更Pythonic的写法,一行就能搞定,而且天然避免了引用问题:

import random

n = 5
ran = [[random.randint(1, 100) for _ in range(10)] for _ in range(n)]

这样生成的ran就是包含n个独立随机数列表的变量,每个列表都是互不影响的独立对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:58:40