为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

噜噜哒 2022-10-05 09:34:29
我有这个代码,它应该将主列表中的每个项目打印在具有相同行号的新行上。在下面的代码中,它工作正常: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


查看完整回答
反对 回复 2022-10-05
?
长风秋雁

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]))


查看完整回答
反对 回复 2022-10-05
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信