Page 1 sur 1

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

MessagePosté: Lundi 29 Janvier 2018, 23:56
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.

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

MessagePosté: Mardi 30 Janvier 2018, 08:03
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.