我无法将唯一的1D列表存储到2D列表中。
我无法将多个随机生成的列表存储到2D列表中。我可以生成n个唯一的1D列表,但是当我尝试将它们存储在2D列表中时,我得到的n个相同的1D列表则生成了n次。
我在列表上使用了append()函数,但多次获得相同的一维列表。
我使用了extend()函数,但是它返回一维列表。
我不明白为什么在使用shuffle()函数时该对象被别名。
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],[7、6、9、8、5、3、4、0、2、1],[2 ,1、0、7、3、8、6、5、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]]
答案 0 :(得分:2)
在您的代码中:
while number < 5:
d_list.append(bd). #bd is the same and initialized one time
number += 1
您需要在一段时间内执行随机化器,才能每次真正拥有随机列表。
答案 1 :(得分:1)
将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个不同的列表。
答案 2 :(得分:1)
要解决您的问题,请在每次迭代时随机播放bd
或使用此单行代码生成相同的列表:
d_list = [random.sample(range(10), 10) for i in range(5)]
答案 3 :(得分:0)
似乎您要将相同列表的5倍附加到一个空列表中。结果准确地表明了这一点。
如果您希望在每次迭代时生成一个新的随机列表,我建议将列表改组放在循环内。
import random
bd = list(range(10))
rng = random.Random()
rng.shuffle(bd)
d_list = []
number = 0
while number < 5:
rng.shuffle(bd)
d_list.append(bd)
number += 1
注意:我还应该使用for
循环而不是while
info来推荐:
import random
bd = list(range(10))
rng = random.Random()
rng.shuffle(bd)
d_list = []
for range(5):
rng.shuffle(bd)
d_list.append(bd)