Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中随机迭代二维列表_Python_List_Loops_Random - Fatal编程技术网

在Python中随机迭代二维列表

在Python中随机迭代二维列表,python,list,loops,random,Python,List,Loops,Random,我第一次尝试实现这一目标的结果是: def rand_Random(self): randomRangeI = range(self.gridWidth) shuffle(randomRangeI) randomRangeJ = range(self.gridHeight) shuffle(randomRangeJ) for i in randomRangeI: for j in randomRangeJ: if

我第一次尝试实现这一目标的结果是:

def rand_Random(self):
    randomRangeI = range(self.gridWidth)
    shuffle(randomRangeI)
    randomRangeJ = range(self.gridHeight)
    shuffle(randomRangeJ)

    for i in randomRangeI:
        for j in randomRangeJ:
            if self.grid[i][j] != 'b':
                print i, j
                self.grid[i][j].colour = self.rand_Land_Picker()
一次只检查一个内部列表的问题:

[1] [1..X]

[2] [1..X]

我希望能够完全随机地迭代二维数组(没有重复)

有人能解决这个问题吗


编辑:感谢您的回复,看来我心目中查看2d阵列的方式与大多数人不同可考虑二维数组作为一维数组,随机迭代。
def rand_Random(self):
    randomRange = range(self.gridWidth*self.gridHeight)
    shuffle(randomRange)

    for index in randomRange:
        i = index / self.gridWidth
        j = index % self.gridWidth
        if self.grid[i][j] != 'b':
            print i, j
            self.grid[i][j].colour = self.rand_Land_Picker()

您可以执行以下操作:

randomRange = range(w*h)
shuffle(randomRange)

for n in randomRange:
    i = n/w
    j = n%w
这里
randomRange
基本上列举了从
0
w*h-1
的所有坐标

甚至更漂亮的,
i
j
,可以在一个语句中找到:

i,j = divmod(n, w)

创建一个包含所有可能的坐标对的数组,将其洗牌并按正常方式迭代

import random
coords = [(x,y) for x in range(self.gridWidth) for y in range(self.gridHeight)
random.shuffle(coords)
for i,j in coords:
    if self.grid[i][j] != 'b':
        print i, j
        self.grid[i][j].colour = self.rand_Land_Picker()