python - 如何遍历嵌套列表以从 1 到 5 对每个列表进行编号 :

标签 python list loops for-loop

所以我正在为一项任务制作一个游戏,我需要制作一个函数,该函数接受一个代表游戏板的嵌套列表,并为每行编号从 1 到 5(对于坐标,例如 F4、G3 等) .

例如,表示板的列表如下所示:

board = [['S', 'S', 'X', 'S', 'S'],
         ['.', '.', '.', '.', '.'],
         ['.', '.', 'T', '.', '.'],
         ['.', '.', '.', '.', '.'],
         ['S', 'S', 'Y', 'S', 'S']]

我需要在每个列表的第一个位置添加一个数字,这样我就会得到如下所示的内容:

board = [[1, 'S', 'S', 'X', 'S', 'S'],
         [2, '.', '.', '.', '.', '.'],
         [3, '.', '.', 'T', '.', '.'],
         [4, '.', '.', '.', '.', '.'],
         [5, 'S', 'S', 'Y', 'S', 'S']]

并像这样显示:

1 S S X S S
2 . . . . .
3 . . T . .
4 . . . . .
5 S S Y S S

我目前的做法是这样的:

def display_board(board):
     bottomLetters  = [" ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"]
     print board
     counter = int(0)
     for row in board:
         counter += int(1)
         row.insert(0, counter)
         for positon in row:
             print positon,
             print

这几乎可以工作,但我得到了一个奇怪的输出:

1 S S X S S
2 . . . . .
3 . . T . .
4 2 . . . . .
5 S S Y S S

或者只是游戏板列表本身:

board = [[1, 'S', 'S', 'X', 'S', 'S'],
         [4, 2, '.', '.', '.', '.', '.'],
         [3, '.', '.', 'T', '.', '.'],
         [4, 2, '.', '.', '.', '.', '.'],
         [5, 'S', 'S', 'Y', 'S', 'S']]

有人知道为什么会这样吗?

最佳答案

不是真正的答案 - 而是一些建议。

你不需要 int(0) 你可以只使用 0。此外,Python 已经提供了一个内置方法来对序列中的项目进行“编号”,称为 enumerate。另请查看 str.join 方法,使格式化文本更易于打印。

使用上面的代码你可以减少你的代码:

board = [['S', 'S', 'X', 'S', 'S'],
         ['.', '.', '.', '.', '.'],
         ['.', '.', 'T', '.', '.'],
         ['.', '.', '.', '.', '.'],
         ['S', 'S', 'Y', 'S', 'S']]

def display_board(board):
    for rowno, items in enumerate(board, start=1):
        print rowno, ' '.join(items)

display_board(board)

这不仅更像 Pythonic,而且更清楚您的意图。

关于python - 如何遍历嵌套列表以从 1 到 5 对每个列表进行编号 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631899/

相关文章:

css - 如何去除边框?

jQuery 迭代数组数组以输出值 "parent-child"

PHP 将变量从 mySQL 结果传递到 foreach 循环

c# - 在 python 脚本中从 C# dll 创建一个通用列表

python - 正则表达式提取可选组内的组

python列表索引问题

c - 获得无限循环而不是预期的受控迭代

python - 由于在 Cygwin 中找不到合适的 Fortran 编译器,我该如何解决这个失败的 Python 扩展构建?

python - Python 提供的单元测试重试功能

Python - 检查字母是否在列表中