python - Python / Pygame 网格设计因追加“索引超出范围”而失败
问题描述
我正在尝试从第 2 行第 13 列开始创建一个网格。该网格将在第 12 行第 25 列结束。但是我在 append(0) 行上不断收到“列表索引超出范围”错误。显然我不明白附加是如何工作的。
grid = []
for row in range(2,12):
# Add an empty array that will hold each cell
# in this row
grid.append([])
for column in range(13,25):
grid[row].append(0) # Append a cell
解决方案
列表的索引始终从 0 开始。range(2, 12)
创建从 2 到 12 的数字。但是列表的索引grid
仍然从 0 开始。您需要从 中减去 2 row
:
grid[row].append(0) # Append a cell
grid[row-2].append(0) # Append a cell
len(grid)
在追加新行之前,使用 , 获取下一行的索引:
grid = []
for row in range(2, 12):
index_of_next_row = len(grid)
grid.append([])
for column in range(13, 25):
grid[index_of_next_row].append(0)
或者,您可以创建一个 roe 并在行完成时将其附加到网格:
grid = []
for row in range(2, 12):
new_row = []
for column in range(13, 25):
new_row.append(0)
grid.append(new_row)
甚至更短:
grid = [[0 for cell in range(13, 25)] for row in range(2, 12)]
推荐阅读
- javascript - Node.js 中内置的动画 gif 的背景图像
- python - 在 Python 函数中,如何显示图像并在 plt.show() 之后继续执行代码?
- javascript - React 组件适用于本地但不适用于 NPM
- html - 替代元素类型以匹配锚元素的样式
- drag-and-drop - react-beautiful-dnd droppable 中的固定位置标头
- python - Python Popen 无法运行 msiexec
- javascript - 未为所有元素附加事件侦听器
- javascript - 如何在普通的 JS 文件中使用 mathjs?
- regex - RE:在 NFA 中实现匹配范围 {m,n}?
- postfix-mta - 后缀。OpenDmarc 拒绝所有邮件。5.7.1 被 DMARC 政策拒绝