【发布时间】:2021-11-02 21:53:48
【问题描述】:
我正在 python 上处理 2D 列表并尝试从网格中隐藏一些值:
想象一下这是网格:
[[0, 0, 1, 1],
[0, 1, 0, 1],
[1, 0, 1, 0],
[1, 1, 0, 0]]
我用这段代码得到的结果:
def startingArray(self,grid_copy):
for i in range (len(grid_copy)):
n= self.CELL
if n>len(grid_copy):
grid_copy[i]=[2 for i in grid_copy]
else:
for i in range(n):
position=random.randrange(0,len(grid_copy[i]))
grid_copy[i][position]= 2
[[2, 0, 1, 2],
[2, 2, 2, 1],
[2, 0, 2, 2],
[2, 1, 2, 2]]
很好,但是,我想要一些可以随机隐藏一半值的东西? 有什么想法吗?
【问题讨论】:
-
想要的结果是什么?
-
将所有坐标放在一个列表中。使用
random.choices()随机选择一半坐标。然后隐藏这些元素。 -
谢谢@U12-Forward 我正在寻找可以随机改变网格的一半元素的东西:在 [[0, 0, 1, 1], [0, 1, 0, 1], [1, 0, 1, 0], [1, 1, 0, 0]] 在 [[0, 2, 1, 2], [2, 1, 0, 2], [2, 2, 1, 0], [1, 2, 2, 0]]
-
@Barmar
choices使用抽样 with 替换,因此很可能会多次选择一个或多个索引。相反,leo 应该使用sample来保证从 16 个集合中选择 8 个不同的坐标对。