索引数组填充不正确

斯拉夫语

我刚刚开始使用Python进行编程,但我对2D数组有疑问。我需要从av [1]创建一个具有一定大小的矩阵(禁止使用numpy)并将其保存,以便以后可以与另一个矩阵相乘。对我来说,合乎逻辑的事情是:1-获得av [1]的长度;2-使用ord将av [1] []转换为ASCII等效项,最后3-将其插入到名为key_matrix的列表中。

矩阵必须尽可能小且以“正方形形式”,因此我计算出包含av [1]的len的最小正方形(称为matrix_size),然后像这样初始化我的数组:

key_matrix = [[0] * matrix_size] * matrix_size; 

像这样,我得到的方矩阵填充为0。例如,如果matrix_size = 3,我得到:

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

现在,奇怪的部分是(以及我卡住的部分)以下内容,我使用

index1 = 0;
index2 = 0;
key_matrix[index1][index2] = ord(sys.argv[1][0]);
print(key_matrix);

仅填充第一行的第一元素。

结果应该是:

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

我得到:

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

我和我的朋友们似乎真的无法弄清楚这样做的原因,欢迎任何帮助!

谢谢大家阅读:)

保罗·罗

写入时列表的内存地址是相同的[[0] * matrix_size] * matrix_size,它基本上将第一个[0] * matrix_size数组的内存地址作为其他列表多次重复使用作为相同的引用。由于这些列表并非从内存地址的角度来看都是独立的,因此仅修改其中一个列表就会产生问题。您可以在下面做为该问题的快速解决方案:

>>> key_matrix2 = [[0] *3 for i in range(matrix_size)]
>>> key_matrix2
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> key_matrix2[0][1] = 2
>>> key_matrix2
[[0, 2, 0], [0, 0, 0], [0, 0, 0]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

填充不正确的颜色

来自分类Dev

数组内容不正确

来自分类Dev

R barplot颜色填充不正确

来自分类Dev

为选项选择的填充不正确

来自分类Dev

Gnuplot 填充曲线显示不正确

来自分类Dev

索引附近的Unicode属性不正确

来自分类Dev

索引慢的PostgreSQL查询(不正确?)

来自分类Dev

熊猫groupby索引不正确

来自分类Dev

索引附近的Unicode属性不正确

来自分类Dev

未定义的索引不正确

来自分类Dev

PageViewController当前索引不正确

来自分类Dev

javascript数组数组不正确

来自分类Dev

初始化后,布尔数组填充了不正确的值

来自分类Dev

PHP:反射,“遇到格式不正确的数值”,设置数组索引

来自分类Dev

Swift:数组排序不正确

来自分类Dev

JavaScript数组长度不正确

来自分类Dev

父子数组的排序不正确

来自分类Dev

数组返回不正确的值?

来自分类Dev

合并的数组格式不正确

来自分类Dev

数组大小设置不正确

来自分类Dev

数组结果格式不正确

来自分类Dev

数组长度不正确

来自分类Dev

改组数组输出不正确

来自分类Dev

移位数组。输出不正确。

来自分类Dev

JSON数组格式不正确

来自分类Dev

为什么数组的总和不正确?

来自分类Dev

数组分配不正确

来自分类Dev

PHP:Foreach访问索引索引不正确的值

来自分类Dev

perl数组不正确地将值分配给索引(保留基数会覆盖相同的索引)