使用enumerate在我的数组中查找str的索引

时间:2014-05-26 15:05:53

标签: python python-3.x enumerate

我正在创建一个简单的游戏网格。我希望能够找到一个球员的位置来计算他们的下一步动作。我尝试使用枚举,但它没有找到任何东西,我无法弄清楚我的错误。任何建议都会受到欢迎。

def createBoard():
    startBoard=[]
    for x in range(0,12):
        startBoard.append(["_"] * 5)
    startBoard[11][1]= 'P1'
    startBoard[11][2]= 'P2'
    startBoard[11][3]= 'P3'
    startBoard[11][4]= 'P4'
    return startBoard

def print_board(board):
        for row in board:
            print (" ".join(row))
        return True


def findBoardLocation(board,a):
    for i in [i for i,x in enumerate(board) if x == a]:
       print('location of {0} is [{1}]'.format(a,i))

startBoard=createBoard()
print_board(startBoard)
a='P1'
findBoardLocation(startBoard,a)

我不知道枚举是否是正确的选择,因为我只需知道行,该列不是必需的。 感谢

1 个答案:

答案 0 :(得分:1)

您只是循环嵌套的行;你没有在列上循环。

您的列表结构如下:

[['_', '_', '_', '_', '_'],
 ['_', '_', '_', '_', '_'],
 # ...
]

但你只能遍历外部列表。这使得x引用整个列表; 'P1'永远不会等于['_', 'P1', 'P2', 'P3', 'P4']。您也必须遍历内部列表:

def findBoardLocation(board, a):
    for rowid, row in enumerate(board):
       for colid, column in enumerate(row):
           if column == a:
               print('location of {0} is [{1}][{2}]'.format(a, rowid, colid))