我有這個代碼,它應該將主列表中的每個項目打印在具有相同行號的新行上。在下面的代碼中,它工作正常: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條經驗 獲得超8個贊
您不想使用該方法,原因有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
提交
取消