我无法将唯一的一维列表存储到2D列表中。
我很难将多个随机生成的列表存储到2D列表中。我可以生成n个唯一的一维生成的列表,但是当我试图将它们存储在一个2D列表中时,我会得到相同的1D列表生成的n个时间。
我在列表中使用了append()函数,但是得到了相同的1D列表多次追加。
我使用了extend()函数,但它返回一个一维列表。
我不明白为什么当我使用霉运()函数时,对象会被别名。
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]
发布于 2019-04-15 18:07:35
将bd的初始化移动到循环中:
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个不同的列表。
发布于 2019-04-15 18:05:52
在您的代码中:
while number < 5:
d_list.append(bd). #bd is the same and initialized one time
number += 1您需要在时间内执行随机化器,以便每次都真正有随机列表。
发布于 2019-04-15 18:21:08
为了解决您的问题,在每次迭代时对bd进行洗牌,或者使用这个一行来生成相同的列表:
d_list = [random.sample(range(10), 10) for i in range(5)]https://stackoverflow.com/questions/55694886
复制相似问题