このコードを作成して、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]
こちらもご覧ください:
お役に立てば幸いです。
python this way ...で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は行の要素ではありません。
Pythonの方法では、これはリストのリストを作成します
受け入れられた答えとは別に、次の方法で行を初期化することもできます-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行の入力を取得する場合:
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])
O/Pは、0ベースのインデックス付けでは5です
m、n = map(int、input()。split())#m-行数; n-列の数。
マトリックス= [[int(j)for input()。split()[:n]] for i in range(m)]
行列のiの場合:print(i)
マトリックスが以下のような行形式で与えられている場合、サイズは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」になります
私は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]])
出力
事前入力された数値を使用してマトリックスを作成するには、リストを理解します。読むのは難しいかもしれませんが、仕事は終わります:
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']]
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]]
入力がこのようにフォーマットされている場合、
1 2 3
4 5 6
7 8 9
1つのライナーを使用できます
mat = [list(map(int,input().split())) for i in range(row)]
no_of_rows = 3 # For n by n, and even works for n by m but just give no of rows
matrix = [[int(j) for j in input().split()] for i in range(n)]
print(matrix)
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の場合、このコードはnoのみを制御します。行のうち、必要な数の列を入力できます。つまり、row[0]=2
ので注意してください。これは、列を制御できないコードではありません。
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])
完全に動作します