Tableau 2 dimensions Python
doudouxa
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
quent217 Messages postés 420 Date d'inscription Statut Membre Dernière intervention -
quent217 Messages postés 420 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis débutante dans la programmation avec python. J'ai écrit un programme qui lit des données numériques d'un fichier excel puis il les stocke dans un tableau 2 dimensions.
Le problème est le suivant: lorsque je copie les éléments vers le tableau et j'affiche tout passe bien
mais lorsque j'affiche a nouveau mon tableau il ne garde que la dernière ligne stockée
Voila le résultat d'affichage
(1.0, 5.0)
(2.0, 6.0)
(3.0, 7.0)
(4.0, 8.0)
(4.0, 8.0)
(4.0, 8.0)
(4.0, 8.0)
(4.0, 8.0)
Merci de me préciser ou est le problème
voici mon code:
je suis débutante dans la programmation avec python. J'ai écrit un programme qui lit des données numériques d'un fichier excel puis il les stocke dans un tableau 2 dimensions.
Le problème est le suivant: lorsque je copie les éléments vers le tableau et j'affiche tout passe bien
mais lorsque j'affiche a nouveau mon tableau il ne garde que la dernière ligne stockée
Voila le résultat d'affichage
(1.0, 5.0)
(2.0, 6.0)
(3.0, 7.0)
(4.0, 8.0)
(4.0, 8.0)
(4.0, 8.0)
(4.0, 8.0)
(4.0, 8.0)
Merci de me préciser ou est le problème
voici mon code:
import xlrd wb = xlrd.open_workbook('D:\\testPythonPetit.xlsx') sh = wb.sheet_by_name(u'Feuil1') for rownum in range(sh.nrows): sh.row_values(rownum) # lecture par colonne colonne1 = sh.col_values(0) colonne2=sh.col_values(1) #tableau pour stocker les données excel lignes, colonnes = len(colonne1), 2 X = [[0] * colonnes] * lignes for i in range(0,len(colonne1)): X[i][0]=colonne1[i] X[i][1]=colonne2[i] print(X[i][0] , X[i][1]) print('***********************') for i in range(0,len(colonne1)): print(X[i][0] , X[i][1])
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICIMerci d'y penser dans tes prochains messages.Jordane45 |
A voir également:
- 34 2d 3f 3d 31
- Tableau word - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
1 réponse
Bonjour,
le problème vient de cette ligne :
Quand tu fais ça, python va créer une liste A contenant des 0 et ensuite il va créer une liste B qui contient elle même plusieurs fois la liste A. Le problème c'est que c'est la référence de la liste A qui est copié et les éléments de B correspondent donc en réalité à la même liste. Cela a pour effet que lorsque tu veux modifier une ligne du tableau, tu modifie en réalité toutes les lignes du tableau de la même manière.
Pour corriger le problème, il faut créer la liste de cette manière :
En faisant comme ça, python va créer plusieurs liste différentes qui contiennent toutes des 0.
le problème vient de cette ligne :
X = [[0] * colonnes] * lignes
Quand tu fais ça, python va créer une liste A contenant des 0 et ensuite il va créer une liste B qui contient elle même plusieurs fois la liste A. Le problème c'est que c'est la référence de la liste A qui est copié et les éléments de B correspondent donc en réalité à la même liste. Cela a pour effet que lorsque tu veux modifier une ligne du tableau, tu modifie en réalité toutes les lignes du tableau de la même manière.
Pour corriger le problème, il faut créer la liste de cette manière :
X = [[0] * colonnes for i in range(lignes)]
En faisant comme ça, python va créer plusieurs liste différentes qui contiennent toutes des 0.