如何在2D python3阵列上存储10x10(100个单位)的游戏地图?在
以下是我当前的代码:
53 worldMap = [[13, 13, 13, 13, 13, 13, 13, 13, 13, 13], [13, 13, 13,
13, 13, 13, 13, 13, 13, 13]]
236 porq = 0
237 genX = 0
238 genY = 0
239
240 #world generator
241 while not 13 in worldMap:
242 porq = porq + 1
243 genIncoming = randint(1, 12)
244 worldMap[genX][genY] = genIncoming
245 genX = genX + 1
246 genY = genY + 1
247 print(worldMap)
正在引发错误:
"Traceback (most recent call last): File "python", line 244, in IndexError: list index out of range"
因此,从你目前的问题内容来看,我们无法确定你的最终目标到底是什么。我将在这样一个假设下工作:您希望一个
n x n
矩阵用Python表示,并且其中有一些数字。我要用数字13
填充这个矩阵,你可以根据需要改变它。在矩阵基本上是行和列,类似这样
这是一个
3x3
矩阵,有3行3列。在我可以用集合集合(列表列表、元组元组、元组列表等)来表示矩阵,其中每个内部集合表示一行。在
我不打算用你想要的大小的矩阵,因为你需要能够计算出来,我将使用
5x5
。在这就是
5x5
矩阵在Python列表中的样子[[13, 13, 13, 13, 13], [13, 13, 13, 13, 13], [13, 13, 13, 13, 13], [13, 13, 13, 13, 13], [13, 13, 13, 13, 13]]
为了做到这一点,我可以做一些简短的事情
[[13 for column in range(5)] for row in range(5)]
现在,您需要一个矩阵,集合的集合可能有点不必要而且速度慢,让我们尝试在Python中使用这个名为
numpy
的库。你必须从源代码,通过Python代码,或者pip或者其他一些工具来安装它。在假设我有一个旧的列表集合,现在我不想使用它,因为它是不必要的,看它有点混乱。我必须用我自己的代码把它正确地打印成矩阵,对它进行矩阵运算等等。为什么不使用一些为我包装起来的东西,比如numpy matrix?在
^{pr2}$假设我需要访问第3行和第4列的元素。在我的集合集合中,这意味着我需要获取第三行,然后是其中的第四个元素。这意味着
collection_of_13s[3][4]
如果我想浏览所有的元素,我将使用@thekingofkings的答案,当然除了这个例子中有5行5列。在
虽然这很管用,但这不是我想要的。我真正想要的是一个13度的网格。因此,为什么不使用这样的numpy矩阵呢?在
它将按行的顺序从左到右遍历矩阵中的每个元素。在
您还将注意到随着项目规模的增长,numpy更高效、更易于使用,for a reason。在
我还想再提一个选择,这是一个超级简单的概念,你不需要任何集合或纽姆。只需使用1D数组来表示网格。这个概念实际上用于图像的主成分分析,但这是无关的。在
本质上,13的网格只是一个普通的列表
任何元素的新索引都将是
(column +1)*(row)
。有一个数学证明和解释,但我现在不想找到它,哈哈您需要嵌套的两级for循环来遍历映射。你只会在地图的对角线上生成块,也就是说,你正在为(0,0),(1,1),(2,2),…..生成映射,这也解释了索引超出范围的错误。在
试试这个
相关问题 更多 >
编程相关推荐