Python函数中有条件地输出列表值

Python函数中有条件地输出列表值,python,multidimensional-array,iteration,conditional-statements,Python,Multidimensional Array,Iteration,Conditional Statements,我正在做一个简单的控制台游戏,我需要一个函数,根据棋盘的状态和它接收到的参数,以不同的方式显示棋盘 棋盘是一个2d列表,它要么有一个对游戏有意义的值,要么有一个空白点 如何修改函数,使其在嵌套循环中检查当前位置是否在可见的参数中,如果是,请在该位置显示列表的值?元组表示(行、列) 我已经将我的循环调整为使用range而不是作为…中的项,因为我预计我将需要这些I,j值 def display_cards(board, visible=[(0, 2), (1, 0)]): prin

我正在做一个简单的控制台游戏,我需要一个函数,根据棋盘的状态和它接收到的参数,以不同的方式显示棋盘

棋盘是一个2d列表,它要么有一个对游戏有意义的值,要么有一个
空白点

如何修改函数,使其在嵌套循环中检查当前位置是否在
可见的
参数中,如果是,请在该位置显示列表的值?元组表示
(行、列)

我已经将我的循环调整为使用
range
而不是
作为…
中的项,因为我预计我将需要这些
I,j

 def display_cards(board, visible=[(0, 2), (1, 0)]):
        print(visible)
        for i in range(4):
            for j in range(4):
                if board[i][j] == EMPTY_SPOT:
                    print(EMPTY_SPOT)
                else:
                    print(HIDDEN_CARD, end=EMPTY_SPOT)
            print()
您可以检查坐标元组是否在
可见的
集合中
。此外,还应避免将可变对象设置为默认参数值,因为行为可能会发生变化


您可以检查坐标元组是否在
可见的
集合中
。此外,还应避免将可变对象设置为默认参数值,因为该行为可能是可变的。

您可以使用
in
关键字检查坐标是否可见

def显示卡(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
打印(板[i][j])
elif板[i][j]==空点:
打印(空白点)
其他:
打印(隐藏卡,结束=空点)
打印()
  • 使用集合而不是列表来显示,查找将更快
  • 你可以生成一个生成器,然后打印出来,它会更快更干净
def显示卡评估(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
收益率委员会[i][j]
elif板[i][j]==空点:
产生空位
其他:
产生隐藏的\u卡,结束=空\u点
def显示卡(评估):
关于评价中的要素:
打印(元素)
显示卡(显示卡评估(板))

您可以使用
中的
关键字检查坐标是否可见

def显示卡(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
打印(板[i][j])
elif板[i][j]==空点:
打印(空白点)
其他:
打印(隐藏卡,结束=空点)
打印()
  • 使用集合而不是列表来显示,查找将更快
  • 你可以生成一个生成器,然后打印出来,它会更快更干净
def显示卡评估(板,可见={(0,2)、(1,0)}):
打印(可见)
对于范围(4)中的i:
对于范围(4)内的j:
如果(i,j)处于可见状态:
收益率委员会[i][j]
elif板[i][j]==空点:
产生空位
其他:
产生隐藏的\u卡,结束=空\u点
def显示卡(评估):
关于评价中的要素:
打印(元素)
显示卡(显示卡评估(板))

您所展示的代码到底有什么问题?它没有实现所需的功能。为什么您认为会这样?可见列表在实际逻辑中根本不使用。我知道-因此“我如何修改我的函数,以便它在嵌套循环中检查当前位置是否在可见参数中,如果是,请在该位置显示列表的值?元组表示(行、列)。”因此,代码编写或教程服务都不可用;这里有一个有用的更合适的资源集合:您所展示的代码到底有什么问题?它没有实现所描述的所需功能。为什么您认为会这样?可见列表在实际逻辑中根本不使用。我知道-因此“我如何修改我的函数,以便它在嵌套循环中检查当前位置是否在可见参数中,如果是,请在该位置显示列表的值?元组表示(行、列)。”因此,代码编写或教程服务都不可用;这里有一个有用的更合适的资源集合:不,这种行为不会出乎意料,因为它不会修改函数中的可变对象。是的,但是如果稍后有人来修改它,那么这可能是一个问题。只是一个一般性的建议,但你是对的,因为这不会引起任何问题。在这里也不是问题。因为另一个人也应该知道这种行为。不,这种行为不会是意外的,因为它不会修改函数中的可变对象。对,但是如果稍后有人来修改它,那么这可能是一个问题。只是一个一般性的建议,但你是对的,因为这不会引起任何问题。在这里也不是问题。另一个人也应该知道这一点。使用一个集合需要+1,但是如何使用生成器会更快呢?似乎瓶颈是使用set时多次调用
print
+1,但是如何使用生成器更快呢?瓶颈似乎是对
print
的多次调用。
def display_cards(board, visible):
    print(visible) # Assume visible is {(0, 2), (1, 0)}
    for i in range(4):
        for j in range(4):
            if (i, j) in visible:
               # The current position is in visible...

            if board[i][j] == EMPTY_SPOT:
                print(EMPTY_SPOT)
            else:
                print(HIDDEN_CARD, end=EMPTY_SPOT)
        print()