猿问

具有列表索引的 For 循环 蟒蛇

我有这个代码,它应该将主列表中的每个项目打印在具有相同行号的新行上。在下面的代码中,它工作正常:


my_list = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]]

for item in my_list:

    print(my_list.index(item)+1, item)

然而,当我试图暗示它成为一个“井字游戏”时,我使它不起作用。下面是概率代码:


def showGrid(y, x, "X"):

    board[y][x] = "X"

    print("  x x x")

    for row in board:

        print(board.index(row)+1, sub("[,']", "", str(row)[1:-1]))

上述代码的输出与第一个示例不同,而是根据 和 值给出随机输出。例如,如果 和 都设置为 1,则输出为:yxyx


  x x x

1 X - -

2 - - -

2 - - -

当 和 都设置为 2 时,输出为:xy


  x x x

1 - - -

2 - X -

1 - - -

我想要的是1 2 3下降。


如果有一个页面涵盖了这一点,请链接它。如果需要更多代码,请说出来。否则提前致谢。:)


噜噜哒
浏览 136回答 2
2回答

largeQ

您不想使用该方法,原因有2个:(1)继续搜索当前列表索引效率低下,并且(2)如果列表中有重复的条目,它将始终返回第一个匹配元素的索引,这就是导致您所看到的问题的原因。index试试这个:def showGrid(y, x, "X"):    board[y][x] = "X"    print("  x x x")    for ix, row in enumerate(board):        print(ix+1, sub("[,']", "", str(row[1:-1]))其工作方式是为每个列表元素生成一个元组。元组的第一个值是列表索引,元组的第二个值是列表元素。enumerate

长风秋雁

board.index(row)返回找到的第一个索引。在这种情况下,第一个索引是因为它包含 。您可以通过循环遍历一个范围来避免使用该函数,例如:row0- - -list.indexdef showGrid(y, x, "X"):    board[y][x] = "X"    print("  x x x")    for i in range(len(board)):        row = board[i]        print(i+1, sub("[,']", "", str(row)[1:-1]))
随时随地看视频慕课网APP

相关分类

Python
我要回答