首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储从while循环随机生成的二维列表?

如何存储从while循环随机生成的二维列表?
EN

Stack Overflow用户
提问于 2019-04-15 18:00:04
回答 4查看 47关注 0票数 0

我无法将唯一的一维列表存储到2D列表中。

我很难将多个随机生成的列表存储到2D列表中。我可以生成n个唯一的一维生成的列表,但是当我试图将它们存储在一个2D列表中时,我会得到相同的1D列表生成的n个时间。

我在列表中使用了append()函数,但是得到了相同的1D列表多次追加。

我使用了extend()函数,但它返回一个一维列表。

我不明白为什么当我使用霉运()函数时,对象会被别名。

代码语言:javascript
复制
import random
bd = list(range(10))
rng = random.Random()
rng.shuffle(bd)
d_list = []
number = 0 

while number < 5:
    d_list.append(bd)
    number += 1

print(d_list)

我预计结果会是

[6、5、3、8、2、4、0、9、1、7、6、9、8、5、3、4、0、2、1、2、0、7、3、8、6、5、4、4、9、1、2、7、0、3、4、5、6、8、9、7、6、3、8、4、5、1、9、0、2]

但结果却是

[7,6,3,8,4,5,1,9,0,2,7,6,3,8,4,5,1,9,0,2,7,6,3,8,4,5,1,9,0,2,7,6,3,8,4,5,1,9,0,2,7,6,3,8,4,5,1,9,0,2,7,6,3,8,4,5,1,9,0,2]

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-15 18:07:35

将bd的初始化移动到循环中:

代码语言:javascript
复制
import random

d_list = []
number = 0

while number < 5:
    bd = list(range(10))
    rng = random.Random()
    rng.shuffle(bd)
    d_list.append(bd)
    number += 1

print(d_list)

现在,您正在洗牌并将相同的列表添加到d_list 5次。初始化循环中的列表意味着您实际上创建了5个不同的列表。

票数 1
EN

Stack Overflow用户

发布于 2019-04-15 18:05:52

在您的代码中:

代码语言:javascript
复制
while number < 5:
    d_list.append(bd). #bd is the same and initialized one time
    number += 1

您需要在时间内执行随机化器,以便每次都真正有随机列表。

票数 2
EN

Stack Overflow用户

发布于 2019-04-15 18:21:08

为了解决您的问题,在每次迭代时对bd进行洗牌,或者使用这个一行来生成相同的列表:

代码语言:javascript
复制
d_list = [random.sample(range(10), 10) for i in range(5)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55694886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档