Python et les tableaux : problème de lignes identiques !

Tout ce qui concerne les différents logiciels mathématiques (Matlab, Maxima, Scilab, R, Maple, Mathematica, ...) et les calculatrices scientifiques.
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.
> Préciser le nom du logiciel concerné dans le titre de votre message.

Python et les tableaux : problème de lignes identiques !

Messagepar fabrice62 » Lundi 29 Janvier 2018, 23:56

Bonjour,

En exécutant le code suivant, je me retrouve avec 50 fois la même ligne.

Pourquoi ?

Code: Tout sélectionner
import matplotlib.pyplot as plt
import random

image = [[0]*50]*50
# print(image)

for ligne in range(50):
    for pixel in range(50):
        image[ligne][pixel] = random.randint(0, 10)

# print(image)
plt.imshow(image,cmap='gray')
plt.show()


Merci,
Fabrice.
fabrice62
Utilisateur
 
Messages: 8
Inscription: Samedi 25 Août 2007, 14:22

Publicité

Re: Python et les tableaux : problème de lignes identiques !

Messagepar OG » Mardi 30 Janvier 2018, 08:03

Bonjour

Il semblerait que
Code: Tout sélectionner
M=[[0]*50]*50

crée une liste en "donnant" (au sens de liste) la même référence pour chaque "ligne".
Donc modifier un élément revient à modifier toute la colonne.
Le comportement est similaire à
Code: Tout sélectionner
a=[1,1,2]
b=[a]*3
b[1,1]=2018


Une solution serait d'utiliser une boucle pour créer image ou la compréhension de liste
Code: Tout sélectionner
image=[ [0]* 50  for i in range (50)]

ou encore Numpy et la vectorisation.

O.G.
OG
Modérateur
 
Messages: 2239
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence


Retourner vers Logiciels mathématiques

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités