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

在 Python 中使用 for 循环的 2D 网格

在 Python 中使用 for 循环的 2D 网格

哈士奇WWW 2021-07-29 01:41:44
我想在 python 中创建一个带有 for 循环的 2D 网格。我可以做这样的简单代码:cols = 10rows = 10grid = [[0 for x in range(cols)] for y in range(rows)]print(grid)但是当我尝试在行中遍历 i 然后在列中遍历 j 时,它显示错误:列表索引超出范围。不确定我的编码哪里出了问题?rows = 10cols = 10i = 0for i in range(rows):    for j in range(cols):        grid[i].append([j])        i += 1
查看完整描述

3 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

在使用类似grid[i].append(). 因为最初列表中没有任何内容,而您指的是不可用的内容。因此,你的错误。:(


您可以改为在每个外部迭代中创建一个子列表,并附0加到内部迭代中的前一个子列表:


cols = 10

rows = 10


grid = []

for _ in range(rows):

    grid.append([])

    for _ in range(cols):

        grid[-1].append(0)


print(grid)


# [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

#  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

将整个组合成一行:

grid = [[0 for _ in range(cols)] for _ in range(rows)]


查看完整回答
反对 回复 2021-08-03
?
FFIVE

TA贡献1797条经验 获得超6个赞

你增加了i两次。第一次进去for i in range(rows),第二次跟i += 1。删除第二个语句,使其看起来像这样:


cols = 10

rows = 10

grid = [[0 for x in range(cols)] for y in range(rows)]


for i in range(rows):

    for j in range(cols):

        grid[i].append([j])

代替:


for i in range(rows):

    for j in range(cols):

        grid[i].append([j])

        i += 1

此外,这个变量初始化当然是不必要的: i = 0


如果您想找到替代方法来做到这一点:


grid = [[0 for x in range(cols)] for y in range(rows)]

您还必须使用嵌套数组初始化数组:


grid = []

for i in range(rows):

    grid.append([])

    for j in range(cols):

        grid[i].append(0)


查看完整回答
反对 回复 2021-08-03
?
HUX布斯

TA贡献1876条经验 获得超6个赞

有几个问题:

  1. 您不会grid在循环之前实例化一个空列表。

  2. 尝试附加到这些子列表之前,您必须将子列表附加到外部列表。

  3. 迭代 a 时range,无需增加计数器。

所以这将起作用:

rows = 5

cols = 5


grid = []

for i in range(rows):

    grid.append([])

    for j in range(cols):

        grid[i].append(0)


print(grid)


[[0, 0, 0, 0, 0],

 [0, 0, 0, 0, 0],

 [0, 0, 0, 0, 0],

 [0, 0, 0, 0, 0],

 [0, 0, 0, 0, 0]]


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

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