如何将二维数组作为if语句。
for row in range(6):
for column in range(7):
if board[row][column] > 0:
Draw = True
我有一个空白正方形的网格,7乘6,如果点击一个正方形,则给定一个值为1,如果没有则保持为0.当所有正方形都被点击时,使得现在为1我想要Draw = True ,但上面的这句话找到了我刚刚选择的行和列,而不是整个网格。
答案 0 :(得分:1)
如果你的意思是检查整个主板是否都是1,那么这是一个简单的解决方案。
DRAW = True
for row in range(6):
for column in range(7):
if board[row][column] == 0:
DRAW = False
另一种方式更容易。
答案 1 :(得分:1)
只有当所有board
值都为1时,您想要的是Draw
设置为True。如果点击了任何网格,您的代码会将Draw
设置为1。
解决方案很简单,您可以反过来思考,将Draw
预设为True,每当网格不为1时,将其设置为False。
Draw = True
for row in range(6):
for column in range(7):
if board[row][column] == 0:
Draw = False
答案 2 :(得分:1)
如果您需要检查集合中的所有值是否具有True
的值,您可以始终使用内置的all()
函数来检查迭代中的所有值是否满足给定条件(在你的情况下是i > 0
):
if all(i > 0 for i in board[row] for row in range(6)):
Draw = True
可以简化为:
if all(i for i in board[row] for row in range(6)):
Draw = True
由于正值评估为True
。
答案 3 :(得分:1)
您可以使用all
作为@ Wboy的forloop的另一种方式:
all(x for y in z for x in y)
#or x !=0 but that's redundant here since 1 equates to True.
这里,z将是你的二维列表。您可以通过这种方式评估不均匀的尺寸,而不会陷入困境"在范围等等。
警告:如果您的网格中有一个空列表,那么此处的all
仍将评估为true。
警告示例网格:
[[],
[1, 1, 1],
[1, 1], #some more rand elements of the grid, first one's the point.
]