0
votes

Python Remplissage de la matrice à l'aide de la boucle

Tout ce que j'essaie de faire est de remplir un tableau avec des chiffres dans l'ordre. Donc, Array [0] [0] = 0, tableau [0] [1] = 1, etc. Pourquoi ne fonctionne-t-il pas? Je ne peux pas le comprendre.

def populateArray(ar):
    count = 0
    i=0
    j=0
    while (i<len(ar)):
        while (j<len(ar[i])):
            ar[i][j] = count
            count = count + 1
            j=j+1
        j=0
        i=i+1
    return ar

numColumns = input('how many columns?')
numRows = input('how many rows?')
arr = [[0]*int(numColumns)]*int(numRows)
arr=populateArray(arr)
print(arr)


1 commentaires

Comment est-ce "ne fonctionne pas"? C'est une information importante et devrait faire partie de votre question.


4 Réponses :


0
votes

Vous pouvez faire ceci:

numColumns = input('how many columns?') 
numRows = input('how many rows?') 
arr = [[i+j for i in range(int(numRows))] for j in range(int(numColumns))] 
arr=populateArray(arr) 
print(arr)


0 commentaires

1
votes

Lorsque vous initiez votre variable CODE> ARR CODE>, vous multipliez une liste de listes avec un numéro, il en résulte un "désordre" car ce que vous le faites réellement, c'est de multiplier la référence du premier Liste (dans votre liste de listes), vous disposez donc de votre Art code> une seule liste et une bande de référence à cette liste, pour résoudre ce problème, vous pouvez faire:

[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]


1 commentaires

Merci pour l'info, c'est exactement ce que j'avais besoin de savoir. Donc, ce n'était pas la boucle tandis que c'est le problème, à savoir comment j'ai initialisé mon tableau (ARR variable). Très appréciée.



0
votes

Lorsque vous utilisez cette syntaxe pour créer une matrice multidimensionnelle xxx

La référence du même élément est créée plusieurs fois, donc si vous attribuez une valeur à l'une d'elles, alors vous changez essentiellement tout les éléments parce qu'ils se réfèrent tous aux mêmes données. Pour ex: xxx

sortie xxx

I n'a changé qu'un élément et c'est le résultat. Vous devez utiliser: xxx

sortie: xxx


0 commentaires

0
votes

Vous pouvez également utiliser NUMPY pour créer la structure, suivi de Numpy.tolist () pour la convertir en une liste Python

import numpy as np
numColumns = int(input('how many columns?')) 
numRows = int(input('how many rows?') )
arr = np.arange(numRows*numColumns).reshape(numRows, numColumns).tolist()
print(arr)


0 commentaires