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

Tout ce qui concerne les logiciels mathématiques (Matlab, Maxima, Scilab, R, ...) et les calculatrices scientifiques.
[forum modéré par les modérateurs globaux du site]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
fabrice62
Utilisateur débutant
Utilisateur débutant
Messages : 8
Inscription : samedi 25 août 2007, 15:22

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

Message par fabrice62 »

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.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

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

Message par OG »

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.