我正在写一个Connect Four脚本。这个脚本把一个移动列表作为输入("A_Red, "B_Yellow", "G_Red"
等),我把它排序成一个矩阵。每个嵌套列表代表棋盘的一列,“A”是第一个嵌套列表(或列),“G”是最后一个嵌套列表(或列)。移动将按如下方式排序:
有一些移动的棋盘类似于:[ ["Red, "Yellow"], ["Red"], ["Yellow", "Yellow"], [], [], [], [] ]
一旦所有的移动都被排序到各自的嵌套列表中,我就用空字符串(“”)填充每个嵌套列表,以防止使用for
循环执行4行检查时出现任何“列表索引超出范围错误”。
如果没有for
循环,如何检查每个嵌套列表的第4个元素(index[3]
)是否包含"Red"
或"Yellow"
?
如果此条件为True,则将执行对角检查,并且我只需要执行一次。
board = [["Red", "Yellow", "Red", "Yellow"], [], [], ["Red", "Yellow", "Red", "Yellow"], [], [], []]
for i in range (0, 7):
if board[i][3]:
# Perform Diagonal Check
上述代码的问题在于,当在任何嵌套列表的第四个位置识别出任何“红色”或“黄色”块时,我只需要执行一次对角线检查。对于上述for
循环,将对第四个位置的每个项执行7次检查。
是否可以检查一系列的列表位置,而无需:
if board[0][3] or board[1][3] or board[2][3]... == "Yellow" or "Red": #etc...
1条答案
按热度按时间watbbzwu1#
要检查每个子列表中的第4个元素,请使用以下代码: