python - 如何引用二维数组python中的特定元素
问题描述
我正在尝试创建一个二维网格来模拟一个世界,我决定使用一个二维数组,每个网格正方形一个元素。它是 40x40,我用它来设置网格:
gridy = ["grass" for i in range(0,40)]
gridx = [gridy for i in range(0,40)]
问题是我不知道如何引用/更改该数组中的单个元素(例如,坐标为 (5,5) 的网格图块)这是我迄今为止使用的:
gridx[5][5] = "water"
程序应该在随机的地方放水,在随机的地方放一块食物。但是,当我运行程序时,网格看起来像这样: 损坏的网格
目前你看不到整个网格,因为它对于窗口来说太大了(稍后会修复),但你明白了。
似乎不是将每个图块作为一个元素,而是将一整行作为一个元素。如何仅引用一个图块?
谢谢
解决方案
我建议您查看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)
推荐阅读
- mysql - 如何使用 MySQL XAAMP 在终端中显示存储在 sql 文件中的表?
- c# - 当我将 C# 与 mongo 驱动程序一起使用时,有没有办法在 Cosmos db 中以 ISO 格式存储日期时间变量
- python - 根据每个分数对预测池中的样本进行排名
- c++ - 有没有办法以特定方式显示 cpp 图
- javascript - 在 vb.net 中使用 Ajax 时找不到具有给定 url 的资源错误
- python - 运行带有输入/输出参数的 bash 命令,但将它们作为不在磁盘中的变量提供
- windows - 无法在 Vim 上制作 Dracula 主题 [os: W10]
- c# - .NET Core 从无法返回重定向的方法将用户发送到页面
- sql-server - 了解具有高安全模式和手动故障转移的数据库镜像会话设置。为什么会有人选择这种组合?
- google-cloud-platform - googleapi: 错误 400: Precondition check failed., failedPrecondition while create Cloud Composer Environment through Terraform