如何创建一个二维数组并为其添加值?
How to create a two dimensional array and add values to it?
我正在尝试欧拉计划问题 10。
这道题要求你将水平、垂直或对角线相连的所有相邻数字相乘。这是一个 link 的问题。
基本上,您将如何创建和定义二维数组?
需要二维数组吗?
我可以用更好的方法吗?
Python 没有像 C 中那样的数组,除非您安装 Numpy 库(如果您正在尝试解决数学和数值处理问题,我建议您安装它)。 Numpy 不是解决这个问题所必需的。
如果你想要一个二维数组,你可以使用嵌套列表:每一行都是一个列表,就像这样:
board = [[10, 12, 5, 7, ...], [24, 3, 7, 8, ...] ... ]
然后您可以将数字索引为 board[0][3]
,这将是 7
(第一行,第四个元素)。您可以在 Python 教程中找到更多相关信息。
对于那个特定的问题,您可能甚至不需要二维数组。您知道电路板的尺寸,因此您可以使用线性阵列(例如,所有行在 400 个元素的阵列中展平)。然后只需添加你就可以在任何方向索引;添加+1/-1 将得到相邻的元素(同一行),添加+20/-20 将得到next/previous 行元素;加 21 将沿对角线移动,等等。
您需要注意边界:问题表述中没有明确说明的一件事是边界处发生的情况,即您是结束还是简单地停下来?应该是后者。
我正在尝试欧拉计划问题 10。
这道题要求你将水平、垂直或对角线相连的所有相邻数字相乘。这是一个 link 的问题。
基本上,您将如何创建和定义二维数组?
需要二维数组吗?
我可以用更好的方法吗?
Python 没有像 C 中那样的数组,除非您安装 Numpy 库(如果您正在尝试解决数学和数值处理问题,我建议您安装它)。 Numpy 不是解决这个问题所必需的。 如果你想要一个二维数组,你可以使用嵌套列表:每一行都是一个列表,就像这样:
board = [[10, 12, 5, 7, ...], [24, 3, 7, 8, ...] ... ]
然后您可以将数字索引为 board[0][3]
,这将是 7
(第一行,第四个元素)。您可以在 Python 教程中找到更多相关信息。
对于那个特定的问题,您可能甚至不需要二维数组。您知道电路板的尺寸,因此您可以使用线性阵列(例如,所有行在 400 个元素的阵列中展平)。然后只需添加你就可以在任何方向索引;添加+1/-1 将得到相邻的元素(同一行),添加+20/-20 将得到next/previous 行元素;加 21 将沿对角线移动,等等。
您需要注意边界:问题表述中没有明确说明的一件事是边界处发生的情况,即您是结束还是简单地停下来?应该是后者。