m,n=input()
a=[0]*n
for i in range(0,m):
a[i]=[0]*m
for i in range(0,m):
for j in range(0,n):
a[i][j]=input()
print a
考虑上面用Python 2.7.4编写的代码来接受二维数组然后打印它。这段代码运行良好,但它应该接受任何二维数组的意思,例如m的值,并且可以分别为3,2,但它只接受一个方阵。我们不能创建矩形矩阵,因为它给出了错误:如果m和n的值不相等,则索引超出范围。有没有办法像我们在C / C ++中那样轻松创建矩形矩阵?
答案 0 :(得分:0)
您可以这样做:
rows = input()
cols = input()
arr = [[None] * cols for _ in range(rows)]
for i in range(rows):
for j in range(cols):
print(arr)
arr[i][j] = input()
print(arr)
您应该看到类似的问题:How to initialize a two-dimensional array in Python?
只要让您的确切代码生效,您就可以在第2行和第2行开启m
和n
。 4:
m = input() # rows
n = input() # cols
a = [0] * m # Initialize rows
for i in range(0, m): # For each row (must be n rows)
a[i] = [0] * n # Initialize a column
for i in range(0, m): # For each row
for j in range(0, n): # For each column
a[i][j] = input() # Input a value
print a
答案 1 :(得分:0)
Numpy是快速线性代数运算的绝佳模块。您可以使用Numpy创建一个矩形数组,该数组本质上是一个矩阵。 (Numpy也有矩阵函数,但它们使用起来有点繁琐)。
例如,按如下所示创建一个3x4数组
import numpy as np
input = np.zeros((3, 4)) #This creates a 3x4 array. It is good practice to initialize your array with 0's
input[0][3] = 5 #Fill out your array. The 0,0 index is the top left corner
In [42]:input
Out[42]:
array([[ 0., 0., 0., 5.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
按照正常情况继续填写矩形矩阵的其余部分。