当前位置: 首页 > 面试题库 >

如何在Python中输入矩阵(二维列表)?

狄兴业
2023-03-14
问题内容

我试图创建此代码以输入m x
n矩阵。我打算输入,[[1,2,3],[4,5,6]]但是代码产生了[[4,5,6],[4,5,6]。当我输入其他m×n矩阵时,也会发生相同的情况,代码会产生行数相同的m×n矩阵。

也许您可以帮助我找到我的代码有什么问题。

m = int(input('number of rows, m = '))
n = int(input('number of columns, n = '))
matrix = []; columns = []
# initialize the number of rows
for i in range(0,m):
  matrix += [0]
# initialize the number of columns
for j in range (0,n):
  columns += [0]
# initialize the matrix
for i in range (0,m):
  matrix[i] = columns
for i in range (0,m):
  for j in range (0,n):
    print ('entry in row: ',i+1,' column: ',j+1)
    matrix[i][j] = int(input())
print (matrix)

问题答案:

问题出在初始化步骤上。

for i in range (0,m):
  matrix[i] = columns

这段代码实际上使您的每一行都matrix引用相同的columns对象。如果任何列中的任何项目发生更改-其他所有列都将发生变化:

>>> for i in range (0,m):
...     matrix[i] = columns
... 
>>> matrix
[[0, 0, 0], [0, 0, 0]]
>>> matrix[1][1] = 2
>>> matrix
[[0, 2, 0], [0, 2, 0]]

您可以在嵌套循环中初始化矩阵,如下所示:

matrix = []
for i in range(0,m):
    matrix.append([])
    for j in range(0,n):
        matrix[i].append(0)

或者,通过使用列表理解来实现单线:

matrix = [[0 for j in range(n)] for i in range(m)]

要么:

matrix = [x[:] for x in [[0]*n]*m]

也可以看看:

  • 如何在Python中初始化二维数组?

希望能有所帮助。



 类似资料:
  • 问题内容: 我有一个数字列表,它们表示另一个程序产生的矩阵或数组的展平输出,我知道原始数组的尺寸,并想将这些数字读回到列表列表或NumPy矩阵中。原始数组中的尺寸可能超过2个。 例如 将产生: [[0,2,7,6],[3,1,4,5]] 提前加油 问题答案: 用途: 您也可以直接分配给的属性,如果你想避免在内存中复制它:

  • 从学习利用MATLAB处理矩阵来入手,是入门MATLAB的最好方法!下面就让我们来看看下面这些例子。 输入矩阵有以下几种不同方法: 直接输入组成矩阵的元素。 从外部文件引入矩阵。 利用自带的函数构成矩阵。 利用在*.M文件内自定义的函数来构成矩阵。 下面让我们来输入杜勒的魔方的一组元素,只要遵循下列几个基本步骤就可以了: 用空格或者逗号来区分一行里不同的元素。 用分号';'来区分不同的行。 用方括

  • 我正在解决一个程序设计的挑战,在一个2D NxN矩阵中寻找最长的递增子序列的长度。在序列的每个元素中,行和列都必须增加(不需要连续)。本文用动态规划方法求解,但它是O(n^4),效率低。然而,在O(n^3)中有许多解。一种这样的解决办法是: 有人能解释一下它的工作原理或其他O(n^3)方法吗?我根本听不懂:(。

  • 我正在做一个2D游戏。我把游戏地图保存在一个名为gameMap的js对象{}上。我的问题是读取矩阵上的一个项目需要太长时间。对于冲突检测,我通常必须检查地图矩阵的10或20个项目,大约需要1ms,屏幕上有10个字符冲突检测成为应用程序的瓶颈,每帧应该持续16ms中的10ms。此外,当地图变得太大时,按比例放大。 假设地图有1000 x 1000个项目。现在,如果我想检查什么是在位置我检查。我的想法

  • 我是编程新手,我有一个任务要求从一维数组创建二维数组。我想到了这一点(没有任何外部来源的帮助,因为这会剥夺学习经验)。它适用于我们教授的测试输入,我只是想知道这是一个丑陋/低效的解决方案。 测试输入:twoDArray([1,2,3,4,5],3)输出将是:[[1,2,3],[4,5]]

  • 我在一个角度项目中使用材料。 除matInput外,我使用的所有材质组件都工作。 我很好地导入了这个组件,我的印象是它被很好地检测到了,但是它的css没有被考虑进去。 _ 在此输入图像描述 垫按钮工作,但垫输入没有。