私はこれを試していました
n = int(input())
m = int(input())
print(n,m)
for i in range(0,n):
for j in range(0,m):
ar[i][j] = int(input())
for i in range(0,n):
for j in range(0,m):
print (ar[i][j])
しかし、それはエラーを示していました
Traceback (most recent call last):
File "C:/Users/shivansh/Desktop/test.py", line 6, in <module>
ar[i][j] = int(input())
NameError: name 'ar' is not defined
以前はC言語でも同じことをしていましたが、うまくいきました。では、Pythonでこれを行う方法は?
ar
をまだ宣言していません。 Pythonでは、個別の宣言と初期化を実行する必要はありません。それでも、名前に対してoperationsを実行することはできません。
次のようなものから始めます。
ar = [[0 for j in range(m)] for i in range(n)]
ar[i][j] = int(input())
のような割り当てを実行しようとする場合、ar
が定義されていないことを知っておく必要があります。これを修正する方法はたくさんあります。
C/C++では、次のような作業を行うと思います。
_#include <cstdio>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
int **ar = new int*[m];
for(int i = 0; i < m; i++)
ar[i] = new int[n];
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
scanf("%d", &ar[i][j]);
// Do what you want to do
for(int i = 0; i < m; i++)
delete ar[i];
delete ar;
return 0;
}
_
C/C++でscanf
による入力を取得する前に、new
またはmalloc
を呼び出してストレージを割り当てる必要があります。そうすると、scanf
を実行できます。そうしないと、クラッシュします。
コードによると、C/C++で行ったことと非常に似ています。_ar[i][j]
_への代入を実行しようとすると、Pythonはar
が何であるかを理解できません。だから最初にそれを知らせなければならない。
NOT-Pythonicの方法は、C/C++で行ったようなものです。
_n = int(input())
m = int(input())
ar = []
for i in range(m):
ar.append([])
for j in range(n):
k = int(input())
ar[i].append(k)
for i in range(m):
for j in range(n):
print(ar[i][j])
_
C/C++で_ar = []
_を実行した場合と同様に、リストを_int **ar = new int*[m];
_で初期化します。 2次元リストの各行について、C/C++で_ar[i] = new int[n];
_を実行したようにar.append([])
を使用して行を初期化します。次に、input
を使用してデータを取得し、_ar[i]
_に追加します。
上記のようなジョブを実行する方法はそれほどPythonicではありませんが、代わりに List Comprehensions と呼ばれる機能を使用してそれを行うことができ、コードは次のように簡略化できます。
_n = int(input())
m = int(input())
ar = [[0 for j in range(n)] for i in range(m)]
for i in range(m):
for j in range(n):
k = int(input())
ar[i][j] = k
for i in range(m):
for j in range(n):
print(ar[i][j])
_
コアar = [[0 for j in range(n)] for i in range(m)]
は、m
リストを含むリストを作成し、これらのm
リストのリストごとにn
0を含むリスト内包であることに注意してください。
次のようにネストされたループで行列を初期化できます:
n = int(input()) # columns
m = int(input()) # rows
print(n,m)
matrix = []
for i in range(0,m):
matrix.append([])
for j in range(0,n):
matrix[i].append(0)
matrix[i][j] = int(input())
print matrix
実際には、列数は必要ありません。行数を入力し、入力スペースを区切るだけです。
rows = int(input('Enter rows\n'))
my_list = []
for i in range(rows):
my_list.append(list(map(int, input().split())))
以前にarを宣言していないため、特定のインデックスに要素を割り当てることはできません。この方法で、特定のvalue
に初期化された2次元リストをデカールできます。
arr = [[value]*c for _ in range(r)]
ここで、r
およびc
は、それぞれ希望する行数および列数です。