我有这个代码,它应该将主列表中的每个项目打印在具有相同行号的新行上。在下面的代码中,它工作正常: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 x1 X - -2 - - -2 - - -当 和 都设置为 2 时,输出为:xy x x x1 - - -2 - X -1 - - -我想要的是1 2 3下降。如果有一个页面涵盖了这一点,请链接它。如果需要更多代码,请说出来。否则提前致谢。:)
2 回答
largeQ
TA贡献2039条经验 获得超7个赞
您不想使用该方法,原因有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
长风秋雁
TA贡献1757条经验 获得超7个赞
board.index(row)返回找到的第一个索引。在这种情况下,第一个索引是因为它包含 。您可以通过循环遍历一个范围来避免使用该函数,例如:row0- - -list.index
def 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]))
添加回答
举报
0/150
提交
取消