我试图创建此代码以输入m×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]
也可以看看:
希望有所帮助。
a,b=[],[]
n=int(input("Provide me size of squre matrix row==column : "))
for i in range(n):
for j in range(n):
b.append(int(input()))
a.append(b)
print("Here your {} column {}".format(i+1,a))
b=[]
for m in range(n):
print(a[m])
工作得很好
rows, columns = list(map(int,input().split())) #input no. of row and column
b=[]
for i in range(rows):
a=list(map(int,input().split()))
b.append(a)
print(b)
输入
2 3
1 2 3
4 5 6
输出[[1,2,3],[4,5,6]]
我使用了numpy库,它对我来说很好。它只是一行而且易于理解。输入需要以空格分隔的单个大小,并且重塑将列表转换为您想要的形状。这里(2,2)将4个元素的列表调整为2 * 2矩阵。注意在输入中给出与矩阵尺寸相对应的相同数量的元素。
import numpy as np
a=np.array(list(map(int,input().strip().split(' ')))).reshape(2,2)
print(a)
输入
array([[1, 2],
[3, 4]])
产量
你可以用这种方式接受python中的2D列表......
只是
arr2d = [[j for j in input().strip()] for i in range(n)]
# n is no of rows
对于角色
n = int(input().strip())
m = int(input().strip())
a = [[0]*n for _ in range(m)]
for i in range(n):
a[i] = list(input().strip())
print(a)
要么
n = int(input().strip())
n = int(input().strip())
a = []
for i in range(n):
a[i].append(list(input().strip()))
print(a)
对于数字
n = int(input().strip())
m = int(input().strip())
a = [[0]*n for _ in range(m)]
for i in range(n):
a[i] = [int(j) for j in input().strip().split(" ")]
print(a)
其中n不是列中的元素,而m不是行中的元素。
以pythonic方式,这将创建一个列表列表
除了接受的答案,您还可以按以下方式初始化行 - matrix[i] = [0]*n
因此,以下代码将起作用 -
m = int(input('number of rows, m = '))
n = int(input('number of columns, n = '))
matrix = []
# initialize the number of rows
for i in range(0,m):
matrix += [0]
# initialize the matrix
for i in range (0,m):
matrix[i] = [0]*n
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)
此代码从用户获取行数和列数,然后将元素和显示作为矩阵。
m = int(input('number of rows, m : '))
n = int(input('number of columns, n : '))
a=[]
for i in range(1,m+1):
b = []
print("{0} Row".format(i))
for j in range(1,n+1):
b.append(int(input("{0} Column: " .format(j))))
a.append(b)
print(a)
m,n = map(int,input()。split())#m - 行数; n - 列数;
matrix = [[int(j)for j in input()。split()[:n]] for i in range(m)]
for i in matrix:print(i)
如果您的矩阵以下面的行方式给出,其中size是s * s,这里s = 5
5
31 100 65 12 18 10 13 47 157 6 100 113 174 11 33 88 124 41 20 140 99 32 111 41 20
那么你可以用它
s=int(input())
b=list(map(int,input().split()))
arr=[[b[j+s*i] for j in range(s)]for i in range(s)]
你的矩阵将是'arr'
使用预填充数字创建矩阵可以使用列表理解来完成。它可能很难读,但它完成了工作:
rows = int(input('Number of rows: '))
cols = int(input('Number of columns: '))
matrix = [[i + cols * j for i in range(1, cols + 1)] for j in range(rows)]
2行3列矩阵将是[[1,2,3],[4,5,6]],3行2列矩阵将是[[1,2],[3,4],[ 5,6]]等
a = []
b = []
m=input("enter no of rows: ")
n=input("enter no of coloumns: ")
for i in range(n):
a = []
for j in range(m):
a.append(input())
b.append(a)
输入:1 2 3 4 5 6 7 8 9
输出:[['1','2','3'],['4','5','6'],['7','8','9']]
row=list(map(int,input().split())) #input no. of row and column
b=[]
for i in range(0,row[0]):
print('value of i: ',i)
a=list(map(int,input().split()))
print(a)
b.append(a)
print(b)
print(row)
输出:
2 3
value of i:0
1 2 4 5
[1, 2, 4, 5]
value of i: 1
2 4 5 6
[2, 4, 5, 6]
[[1, 2, 4, 5], [2, 4, 5, 6]]
[2, 3]
注意:此代码在control.it的情况下仅控制否。行但我们可以输入我们想要的任意数量的列,即row[0]=2
所以要小心。这不是您可以控制任何列的代码。