Bonjour je n’arrive pas à mon devoir maison quelqu’un pourrait m’aider s’il vous plaît même en regardant tes vidéos je n’arrive pas

En Python pour représenter une matrice, on concatène (on "combine") des listes dans une liste.
Par exemple, pour une matrice comme ça
[tex]\[ M = \begin{pmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{pmatrix}\][/tex]
On va créer une liste pour chaque ligne et enfermer toutes ces liste dans une grande liste.
[tex]\[ M = \begin{bmatrix} [1 &2 &3]\\ [4 & 5 & 6]\\ [7 & 8 & 9]\\ \end{bmatrix}\][/tex]
Là j'ai gardé une présentation mathématique mais évidement en Python tout est écrit à la suite, donc ça donnera:
▌ M = [[1,2,3],[4,5,6],[7,8,9]]
Et tu dois savoir qu'en Python pour accéder à éléments provenant d'une liste on l'indique par son index entre [], comme:
▌ Liste[2]
Ici c'est pareil sauf que si on ne fourni qu'une seule indication, on aura juste la liste qui correspond à l'index.
(Rappel: les listes comptent à partir de 0, 1, 2, 3...)
▌ M[1] = [4,5,6]
On doit donc fournir 2 indications, la ligne (si c'est dans la première, la deuxième, ou la troisième liste) et la colonne (quel élément de la ligne on souhaite)
▌ M[1][1] = 5
Ces quelques explications servent juste à expliquer le concept, maintenant c'est facile de le faire pour la matrice de ton exercice.
C'est pareil que pour l'exemple
▌ M = [[-3,1,0],[1,-1,2],[0,-3,5]]
L'énoncé nous donne déjà un très bon indice en nous parlant de la fonction native de Python: abs(x).
Cette fonction abs(x) n'admet comme argument qu'un entier (un objet de type integer en Python), il n'est donc pas question de simplement faire:
▌ val_abs = abs(liste)
Il va falloir passer sur tous les éléments compris dans la liste, un par un et de renvoyer la valeur absolue à chaque fois.
Qui dit passages rémanents dit: boucle. Il existe deux types de boucle: while et for.
Tu as sûrement déjà vu en classe la différence entre les deux:
Donc notre fonction val_abs(liste) va simplement devoir exécuter une boucle for qui servira à récupérer la valeur absolue de tous les éléments de la liste.
Une fois obtenue, il faudra alors ajouter cette valeur absolue à une liste vierge précédemment créée, au début de la fonction.
Après être passée sur tous les éléments, la fonction va juste return (renvoyer) la liste finale.
▌ Code ci-joint
Créer une liste par compréhension c'est une manière raccourcie de définir une liste avec des conditions.
Voici une liste des nombres pairs entre 1 et 12:
▌ pairs = [2, 4, 6, 8, 10, 12]
Si je veux trouver tous les nombres impairs correspondants à cette plage, il va me falloir utiliser une boucle for
▌ imp = []
▌ for p in pairs:
▌ imp.append(p-1)
Ce qui me donnera
▌ imp = [1, 3, 5, 7, 9, 11]
Et bien je peux raccourcir ce procéder en créant la liste impairs par compréhension, ça donne:
▌ imp = [p-1 for p in pairs]
Après mes quelques explications tu es sensé avoir compris le principe des liste par compréhension.
Sauf qu'ici c'est beaucoup plus complexe que mon exemple !
L'énonce demande de construire la liste N pour qu'elle soit identique à la liste initiale M sauf que tous les coefficients doivent être positifs.
Je te rappelles deux choses:
Le plus simple pour bien comprendre comment faire la liste par compréhension, c'est de d'abord l'écrire sous forme longue (comme à l'exemple), ça nous donnerait:
▌ M = [[-3,1,0],[1,-1,2],[0,-3,5]]
▌ N = []
▌ for n in range(3):
▌ N.append(val_abs(M[n]))
NB: On met in range(3) car il y a 3 listes dans M.
Maintenant il faut obtenir la liste par compréhension:
▌ M_abs = [val_abs(M[i]) for i in range (3)]
Je vois difficilement comment expliquer étape par étape donc je vais plutôt poser une série d'indications et le code final ci-joint
Si tu n'as pas tout compris n'hésite pas à me le demander en commentaire