Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中输入矩阵(2D列表)?_Python_List_Input_Matrix - Fatal编程技术网

如何在Python中输入矩阵(2D列表)?

如何在Python中输入矩阵(2D列表)?,python,list,input,matrix,Python,List,Input,Matrix,我试图创建这个代码来输入一个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 numb

我试图创建这个代码来输入一个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
此代码实际上使
矩阵的每一行
引用相同的
对象。如果任何列中的任何项发生更改,则其他每一列都将发生更改:

>>> 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)]
或:

另见:


希望有帮助。

您可以通过这种方式接受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())
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方式,这将创建一个列表列表

除了接受的答案外,您还可以按以下方式初始化行-
矩阵[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)
输入

2 3
1 2 3
4 5 6
array([[1, 2],
       [3, 4]])
输出
[[1,2,3],[4,5,6]]

如果您的矩阵按如下行方式给出,其中大小为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”

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)
输入:123456789


输出:['1','2','3'],['4','5','6'],['7','8','9']]

可以通过列表理解来创建带有预填充数字的矩阵。这可能很难阅读,但可以完成以下任务:

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]]等

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]
注意:此代码用于控制。它只控制行数,但我们可以输入所需的任何列数,即
行[0]=2
,因此请小心。这不是可以控制列数的代码。

m,n=map(int,input().split())#m-行数;n-列数

矩阵=[[int(j)表示输入()中的j。拆分()[:n]]表示范围(m)中的i]

对于矩阵中的i:打印(i)


非常好用

我使用了numpy库,它对我来说很好用。它只是一行代码,很容易理解。 输入需要以空格分隔的单个大小,重塑将列表转换为所需的形状。此处(2,2)将4个元素的列表调整为2*2矩阵。 在与矩阵的维数相对应的输入中,要注意提供相等数量的元素

import numpy as np
a=np.array(list(map(int,input().strip().split(' ')))).reshape(2,2)

print(a)
输入

2 3
1 2 3
4 5 6
array([[1, 2],
       [3, 4]])

输出

如果要获取n行输入,其中每行包含m个空格分隔的整数,如:

2 3
1 2 3
4 5 6
array([[1, 2],
       [3, 4]])
1 2 3
4 5 6 
7 8 9 
然后您可以使用:

a=[] // declaration 
for i in range(0,n):   //where n is the no. of lines you want 
 a.append([int(j) for j in input().split()])  // for taking m space separated integers as input
然后为上述输入打印所需内容:

print(a[1][1]) 
对于基于0的索引,O/p将是5,对于n×n,O/p将是3,对于n×m,O/p甚至有效,但只给出行数 矩阵=[[int(j)表示输入中的j().split()]表示范围(n)中的i] 打印(矩阵)
如果输入的格式如下所示

1 2 3
4 5 6
7 8 9
可以使用一个衬垫

mat = [list(map(int,input().split())) for i in range(row)]

您可以创建列表的任何维度

list=[]
n= int(input())
for i in range(0,n) :
    #num = input()
    list.append(input().split())
print(list)
输出:


您能解释一下为什么这应该回答OP问题吗?相关:相关: