Bonjour, j'ai une question par rapport à une matrice

qui est sous cette forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
res = []
    for i in range(nb_lignes):
        liste = []
        for j in range(nb_colonnes):
            liste.append(valeur_par_defaut)
        res.append(liste)
    return res
ca donne quelque chose comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[[0, 1, 2],
  [3, 4, 5],
  [6, 7, 8]]
et le but de l'exercice est de faire la fonction ci dessous (décalage_colonne_en_haut) , c'est a dire de décaler une colonne en récupérant le nombre qui est enlevé et rajouter une nouvelle valeur (par ex: 9) en bas de la colonne.

Donc la matrice
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[[0, 1, 2], 
 [3, 4, 5],
 [6, 7, 8]]
en insérant une nouvelle valeur 9 a la colonne 1 doit donner ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
                        [[0, 4, 2], 
                         [3, 7, 5],
                         [6, 9, 8]]
en retournant a la fin de la fonction la valeur qui a été enlevé ici c'est le nombre 1.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
def decalage_colonne_en_haut(matrice, num_colonne, nouvelle_valeur=0):
    """
    decale la colonne num_colonne d'une case vers le haut en insérant une nouvelle
    valeur pour remplacer la premiere case en bas de cette ligne
 
    :param matrice: la matrice considérée
    :param num_colonne: le numéro de la ligne à décaler
    :param nouvelle_valeur: la valeur à placer
    :return: la valeur qui a été ejectée lors du décalage
    """
J'ai fait quelque chose comme ca mais ca ne fonctionne pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    retire avec .pop le premiere element colonne et rajouter a la derniere ligne la new val a la colonne
    nb_retire = matrice[0].pop(num_colonne)
    matrice[-1].append(nouvelle_valeur)
    return nb_retire
Ou aussi j'ai fait ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
    for i in range(len(matrice)-1):
        nb_ret = matrice[0][num_colonne]
        matrice[i].pop(num_colonne)
        matrice[i].insert(num_colonne,matrice[i+1][num_colonne])
    matrice[-1][num_colonne] = nouvelle_valeur
 
    return nb_ret
JE vous remercie de votre aide, certaines personnes m'on parlé de boucle imbriquée mais si vous avez une solution plus simple je suis preneur.

Merci