Je suis nouveau sur Python 3.4 et j'utilise habituellement MATLAB/GNU Octave pour le calcul matriciel. Je sais que nous pouvons effectuer un calcul matriciel avec numpy dans Python 2.x, mais numpy ne fonctionne pas pour Python 3.4.
J'ai essayé de créer ce code pour saisir une matrice m par n. J'avais l'intention d'entrer [[1,2,3],[4,5,6]]
mais le code produit [[4,5,6],[4,5,6]
. Les mêmes choses se produisent lorsque je saisis une autre matrice m par n, le code produit une matrice de m par n dont les lignes sont identiques.
Peut-être que vous pouvez m'aider à trouver ce qui ne va pas avec mon code.
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)
Le problème est sur l'étape d'initialisation.
for i in range (0,m):
matrix[i] = columns
Ce code fait en réalité que chaque ligne de votre matrix
se réfère au même objet columns
. Si l'un des éléments d'une colonne change, toutes les colonnes changent:
>>> 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]]
Vous pouvez initialiser votre matrice dans une boucle imbriquée, comme ceci:
matrix = []
for i in range(0,m):
matrix.append([])
for j in range(0,n):
matrix[i].append(0)
ou, dans une ligne en utilisant la compréhension par liste:
matrix = [[0 for j in range(n)] for i in range(m)]
ou:
matrix = [x[:] for x in [[0]*n]*m]
Voir également:
J'espère que cela pourra aider.
vous pouvez accepter une liste 2D en python de cette façon ...
simplement
arr2d = [[j for j in input().strip()] for i in range(n)]
# n is no of rows
pour les personnages
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)
ou
n = int(input().strip())
n = int(input().strip())
a = []
for i in range(n):
a[i].append(list(input().strip()))
print(a)
pour les nombres
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)
où n est le nombre d'éléments dans les colonnes, alors que m est le nombre d'éléments dans une ligne.
De façon pythonique, cela va créer une liste de liste
Outre la réponse acceptée, vous pouvez également initialiser vos lignes de la manière suivante: matrix[i] = [0]*n
Par conséquent, le code suivant fonctionnera -
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)
Ce code prend le nombre de lignes et de colonnes de l'utilisateur, puis les éléments et les affiche sous forme de matrice.
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)
Créer une matrice avec des nombres préremplis peut être fait avec une compréhension de liste. C'est peut-être difficile à lire, mais le travail est fait:
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)]
avec 2 rangées et 3 colonnes la matrice sera [[1, 2, 3], [4, 5, 6]], avec 3 rangées et la matrice 2 colonnes sera [[1, 2], [3, 4], [ 5, 6]] etc.
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)
Entrée: 1 2 3 4 5 6 7 8 9
Sortie: [['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]):
a=list(map(int,input().split()))
b.append(a)
print(b)
contribution
2 3
1 2 3
4 5 6
sortie [[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)
Sortie:
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]
Remarque: ce code en cas de control.it ne contrôle que no. De rangées mais nous pouvons entrer n'importe quel nombre de colonne que nous voulons i.e row[0]=2
alors soyez prudent. Ce n'est pas le code où vous pouvez contrôler le nombre de colonnes.
m, n = carte (int, entrée (). split ()) # m - nombre de lignes; n - nombre de colonnes;
matrice = [[int (j) pour j en entrée (). split () [: n]] pour i dans la plage (m)]
pour i dans la matrice: print (i)
Si votre matrice est donnée comme ci-dessous, où la taille est 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
alors vous pouvez utiliser ceci
s=int(input())
b=list(map(int,input().split()))
arr=[[b[j+s*i] for j in range(s)]for i in range(s)]
votre matrice sera 'arr'