数组的if语句

时间:2016-07-17 03:59:41

标签: python arrays python-3.x if-statement

如何将二维数组作为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 ,但上面的这句话找到了我刚刚选择的行和列,而不是整个网格。

4 个答案:

答案 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.
]