首页 > 解决方案 > 如何引用二维数组python中的特定元素

问题描述

我正在尝试创建一个二维网格来模拟一个世界,我决定使用一个二维数组,每个网格正方形一个元素。它是 40x40,我用它来设置网格:

gridy = ["grass" for i in range(0,40)]
gridx = [gridy for i in range(0,40)]

问题是我不知道如何引用/更改该数组中的单个元素(例如,坐标为 (5,5) 的网格图块)这是我迄今为止使用的:

gridx[5][5] = "water"

程序应该在随机的地方放水,在随机的地方放一块食物。但是,当我运行程序时,网格看起来像这样: 损坏的网格

目前你看不到整个网格,因为它对于窗口来说太大了(稍后会修复),但你明白了。

似乎不是将每个图块作为一个元素,而是将一整行作为一个元素。如何仅引用一个图块?

谢谢

标签: pythonarrays2d

解决方案


我建议您查看numpy :) 它速度很快,您可以轻松地进行二维数组操作。(我的意思是分配如下值更重要,这当然也可以通过列表轻松实现)

import numpy as np
x = np.zeros((40, 40)) # create array of size 40 x 40 
x[5][5] = 1

其中 0 代表草,1 代表水。您还可以更改数组的类型,以便能够用字符串填充它。

话虽如此,没有 numpy 的方法也应该有效。确实,您的命令非常好。

gridy = ["grass" for i in range(40)] 
gridx = [gridy for i in range(0,40)]
gridx[5][5] = "water" # works :) 
print(gridx[5][5]) # >> prints: "water"

在旁注中,值得注意的是,它range(0, 40)range(40)


推荐阅读