检查每个嵌套列表中的相同位置是否存在项- Python

smdncfj3  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(112)

我正在写一个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...
watbbzwu

watbbzwu1#

要检查每个子列表中的第4个元素,请使用以下代码:

mylist = [[1, 2, 3, 0, 4], [5, 6, 7, 0, 8], [9, 1, 2, 0, 3]]

fourth_element_check = [x[3] for x in mylist]

if 0 in fourth_element_check:
    print ("0 is the fourth element of one of the nested lists")

相关问题