python - 在以某种格式获取输入并将其以所需格式存储在 python 中时存在错误

标签 python python-3.x

我无法获得所需格式的输入。我提供了以下示例输入格式 -

3 4
1 1 1 2
3 1 1 1
1 1 1 2
2 2 2 1
1 1 2 2
1 1 2 2

第一行包含mn值,m是行数,n是列数。 每个单元格包含一个包含 2 个数字的列表。 因此,接下来的 2m 行每行包含 n 个整数。前 m 行包含每个单元格的第一个数字。第二个 m 行包含每个单元格的第二个数字

对于给定的示例输入,单元格将获得类似 - 的值

[1,2] [1,2] [1,2] [2,1]
[3,1] [1,1] [1,2] [1,2]
[1,1] [1,1] [1,2] [2,2]

这是我想要在矩阵列表变量中存储数据的所需格式。

下面是我以这种格式存储数据的代码。

matrix = [[[0]*2]*n]*m
for i in range(0, 2):
    for j in range(0, m):
        temp = list(map(int, input().split()))
        for k in range(0, n):
            matrix[j][k][i] = temp[k]

这应该可以正常工作,但事实并非如此。我找不到问题所在。我的 matrix 变量仅填充 2 。每个单元格中都存储了 2

现在我的matrix变量存储这些数据 -

[[[2, 2], [2, 2], [2, 2], [2, 2]],
 [[2, 2], [2, 2], [2, 2], [2, 2]],
 [[2, 2], [2, 2], [2, 2], [2, 2]]]

正确的值应该是 -

[[[1, 2], [1, 2], [1, 2], [2, 1]],
 [[3, 1], [1, 1], [1, 2], [1, 2]],
 [[1, 1], [1, 1], [1, 2], [2, 2]]]

在任何替代解决方案之前,我想先知道代码中的问题出在哪里。

最佳答案

Disclaimer: This is Untested

制作矩阵的方式将引用同一个列表,因此当您编辑一个列表时,它也会编辑其他列表

matrix = [[[0]*2]*n]*m

应该是

matrix = [[[0, 0] for _ in range(n)] for _ in range(m)]

关于python - 在以某种格式获取输入并将其以所需格式存储在 python 中时存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52548928/

相关文章:

python - 如何在服务器端完全启用 Facebook OAuth 2.0?

python - 有没有办法在运行过程中暂停代码?

python - 尝试在 2 行代码中打印小于 1000 的 3 的所有幂

python - 使用python迭代直到第二个数组的末尾

php - 如何使用正则表达式替换字符串中的数字

python - python中类的__repr__方法的查询

Python xlwt : sum function max arguments limit?

python - 如何使用内置的 round() 函数

python - pytest:从代码而不是命令行运行测试

python-3.x - Altair 为交互式散点图 jar 添加日期 slider