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

Tout ce qui concerne par exemple les outils de calcul numérique, de calcul formel ou de géométrie.
[participation réservée aux membres inscrits]
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

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

Message non lu 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 spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

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

Message non lu 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.