# =================================================================== # créer une matrice # l'écriture suivante pose problème car 'ligne' est trois fois # la même variable, donc si on modifie un élément de ligne il # est répercuté sur les autres lignes # =================================================================== ligne = [0, 0, 0, 0, 0] matrice = [ ligne, ligne, ligne ] matrice[0][3] = 1 print(matrice) # [[0, 0, 0, 1, 0], [0, 0, 0, 1, 0], [0, 0, 0, 1, 0]] # =================================================================== # oubli # au lieu d'écrire t[i] == True, on a écrit : # mais Python n'indique aucune erreur !! # =================================================================== i = 1 if [i] == True: print("ici") else: print("non, ici !") # =================================================================== # # modification d'un élément répercutée sur la liste passée en # paramètre dans f(x) : ok # # =================================================================== def f(x): x[3] = 99 z = [0 for _ in range(5)] print(z) # [0, 0, 0, 0, 0] f(z) print(z) # [0, 0, 0, 99, 0] OK ! # =================================================================== # # modification de la structure non répercutée sur la liste x : ko # # =================================================================== def power(x, d): if d <= 0: for i in range(len(x)): x[i] = 0 x = x[d:] # x = [0,99,0] x = x + [0] * d # x = [0,99,0,0,0] # mais manque un "return x" power(z, 2) print(z) # [0, 0, 0, 99, 0] au lieu de [ 0, 99, 0, 0, 0] # =================================================================== # # objet mutable en paramètre # # =================================================================== def func(a, L=[]): for i in range(a): L.append(i) return L # premier appel, L est créée puis vaut [0,1] print(func(2)) # second appel, L n'est pas recréée donc L = [0, 1, 0, 1, 2] print(func(3))