【问题标题】:An if statement for an array数组的 if 语句
【发布时间】:2016-07-17 03:59:40
【问题描述】:

如何使二维数组成为 if 语句。

for row in range(6):
    for column in range(7):
        if board[row][column] > 0:
            Draw = True

我有一个由 7 x 6 组成的空白正方形网格,如果单击一个正方形,它的值为 1,否则它保持 0。当所有正方形都被单击后,我想要绘制现在的 1 = True ,但上面的语句会找到我刚刚选择的行和列,而不是整个网格。

【问题讨论】:

  • 需要更多说明。你的意思是当整个棋盘都是“1”然后设置draw = True?
  • 是的,我就是这个意思,对不起

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


【解决方案1】:

如果您的意思是检查整个棋盘是否全为 1,那么这是一个简单的解决方法。

DRAW = True

for row in range(6):
    for column in range(7):
        if board[row][column] == 0:
            DRAW = False

换一种方式更容易。

【讨论】:

    【解决方案2】:

    你想要的只是当所有board 值都为 1 时,Draw 设置为 True。如果点击了任何网格,您的代码会将Draw 设置为 1。

    解决方法很简单,你可以反过来想,把Draw设置为True,只要grid不为1,就设置为False。

    Draw = True
    for row in range(6):
        for column in range(7):
            if board[row][column] == 0:
                Draw = False
    

    【讨论】:

      【解决方案3】:

      您可以使用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 仍然会评估为真。

      警告的示例网格:

      [[],
       [1, 1, 1],
       [1, 1], #some more rand elements of the grid, first one's the point.
      ]
      

      【讨论】:

      • 啊,是的,更好的方法:)
      【解决方案4】:

      如果您需要检查集合中的所有值是否具有 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多