Les listes de listes
Nous avons vu une utilisation des listes de listes dans la vidéo réalisée par Charles Poulmaire :
Vidéo sur les listes
I. Présentation des matrices
Une remarque pour commencer
Exécuter ci-dessous
Accéder aux valeurs d'un tableau
🤔 Et oui... puisque a référence [1, 2, 3], cela implique qu'il revient au même d'écrire a ou [1, 2, 3] !
Donc a[0] est la même chose que [1, 2, 3][0]
😂 Quel intérêt ? Personne n'écrit les choses ainsi ?
😊 Certes, mais cela pourrait vous aider à y voir clair dans ce qui suit...
Exemple de matrice
Voici un exemple de matrice (dans le langage courant on parle aussi de tableau au sens du tableur mais la confusion possible avec les tableaux informatiques que nous connaissons est trop risquée, nous parlerons donc de matrices) :
\[
\begin{bmatrix}
1 & 3 & 4 \\
5 & 6 & 8 \\
2 & 1 & 3 \\
\end{bmatrix}
\]
Nous pouvons représenter cette matrice en Python à l'aide d'une liste... de listes (le nom de la variable m évoque le 'm' de matrice bien sûr) :
m = [[1, 3, 4], [5, 6, 8], [2, 1, 3]]
À vous de jouer
Compléter ci-dessous : à l'aide d'une boucle for parcourir la liste m et afficher tous les éléments.
Solution
for element in m :
print(element)
II. Accéder à une valeur
Accéder à une valeur
Comment accéder à la valeur 6 de la matrice m ?
6 est la valeur se trouvant à la 2ème ligne 2ème colonne.
Mais regardons comment est écrite la matrice :
m = [[1, 3, 4], [5, 6, 8], [2, 1, 3], [7, 8, 15]]
La deuxième ligne est clairement : m[1], vous êtes d'accord ?
Et du coup, 6 est la 2ème valeur de deuxieme_ligne, on est toujours d'accord ?
Tester ci-dessous :
À vous de jouer 3
Compléter ci-dessous pour faire afficher la valeur 7.
Vous utiliserez la deuxième méthode de l'exemple précédent
Solution
Accéder à un élément
🌵 Attention : la première ligne correspond à i = 0, et la première colonne à j = 0
👉 Pour accéder à la ligne i, colonne j, on ecrira donc m[i][j]
😊 Il suffit de le savoir, alors maintenant... vous savez !
Présentation
Il est souvent plus pratique de présenter ces "tableaux de tableaux" comme suit :
m = [[1, 3, 4],
[5, 6, 8],
[2, 1, 3],
[7, 8, 15]]
Nous obtenons ainsi quelque chose qui ressemble beaucoup à un "objet mathématique" très utilisé : une matrice
À vous de jouer 4
Ecrire ci-dessous toutes les instructions qui affichent 8.
Solution
print(m[1][2])
print(m[3][1])
À vous de jouer 5
Compléter la fonction accede_valeur qui prend en paramètres un tableau tableau, et deux entiers ligne et colonne.
Cette fonction doit renvoyer l'élément de tableau, situé à la ligne ligne et à la colonne colonne.
.12801345/_1[Eylp):uS he(gnmé]=w-vi,txb9;càf80dP372ors6ka050O0r0E0Y0C0j0V0p0J0j0Y0V0V0y010E0C0k010406050V0n0v0v0Y0U0i040o0T0j0n0?0T0u050d0}0 11130{0k04051j1c1m0d1j0{0O0C0B0+0-0/0;0-0u0t0n0Y0t0r0A0k0i0E0q1a0p0q0C0t0q0j1O0q0E0_050$0G0j0r1v0.0:011N1P1R1P0E1X1Z1V0E0U1k1J0+160V0k0Y0u0;0S011#1x010L0(0r0u0Y0v0r1V1`1|211%241Z27290_0a0p0P0U0T0k0T0V0C190u0p0!1^0U0U0r0J2u1c2c0u1k0d1J2H1;1?1=1W0O2e1y0C0u262r1V1s1u0,1$2R2T0u0T2X1V0k2A1k2F2H2.0|1{2v2Z222%0U100j1V0Y1M2A0L0;030e0e0J2(0r1R2$0T0A0c0A0f0_0p0f1c0Y2/2=0`2;2d2@1%2_2{2}2 0r3101333537392U3c0A1 040p0S3j3l1|3n2F2Q013s0Y2|1k2~0q303234360!3C2%3E0Q3g0Q3K2E3m0{3O3q0;3R3T053V3X3y3Z3B2S3D3d0b3g0b3,1d3.3o2?1w3r0T2`3S3u3W3w3Y3A3#3~3%3d0c3g0c442.3/2=3P3?4e3`3z3!384k3b3d0W3g0W4q463:493=4b3t3U3v3x4y3}3a3E0R3g0R4H3M4s3p4K3Q4M4d4O4f4Q3|4j4T3d0M3g0M4Y2G4!482!4%4c3@3_4g3{4i4A4/0A0H3g0H4@3N4t3;4|4N3^4P4h4z3$4C3e0N0_0f0N594_4u4(4~5g515i4B3E0f3f045A5q475s4}4w504R4.3 3e3G0f3J0d3k3-4Z5F5c4v4*4x4-535M0f3)5C3+5R3L2G1n2,1c2X2K0O1?2P5c4z2W1t1k2+0r2-3m5T5-4z602d0C0O0;342F5z3u6769525j6c0p2i0r6f5x545B3,4J4{0X0_0!0L62654`220z3g6x5V4$0u0L0_0Y0J0J0r0!0e0B3S0r0n0U6D6r220^040s6U5b6F0_1.0r0Y0n6!4#4{6X0D6x0p6E4{0u0_1+2T6,6z1%6/6;6?2^0_360j1a6{453M716~0_0l706V1%0T0_0A020t0E0I7e6#6@0G0_2S0E7o6-6W0_0m6x0{785-3O6e016a2=3E3G5f7F5!6h3d1 6j286l7G6g5y7P1V5+7a0;6B3H0p7(6|3P0V0O0_017/7A7*7M0e6b3d5(7L687U6n5M3)7R296m4S7 7Y5S7f0;7,3g7(0p0h0u1;0w1!0m6=7C3n8l5F7?7^0A414O7?7~4l8r206k835L8w8s6q7p228a7%8c0p0A0p6(6*0p0r0V0E0p0n2T0p1R8R1!2x8X0E8Q2w00260?0r0U0V7;8n7E7|7H1|3E4n8t8=7V544n817T7N7W3c866y7+7-8I8c8L6`1!0#1^750u8V0V1a8S0!0n0F0p7t0D8W8%2S1s6L0*8!1O8V9d2x74760r8/2:8;6f8q4E8`8A5#8w4E8 9M7O0A9K8E7w1%8H8J150U8+0p8j0-0p0L1a2C0C1L2A0u0B0T0C1!0j000w0j0w298f0p2s0E0n0w0p0K8W2~9b8(9t0C6L8W9y0r9q9C9g8Z00abadai774r7=8{8q4V9L7}848w4V9Qaw8B5kau3K7B9G4t8p7I4:6d8{8v5k4;aA91544;2H878F9X978J0h0F0r0v0k1Z9%9F619H7U8q56avaS5M56aR8|a@947!019Y8c7k7mb10Ib30p0v0p0y0p0gba0f9q0Q9q0b0x9q0g0c0p0D0Wbm0Mbiba0S9qbd0p0Q0x0p0xa,79a.8?0u5z5ma=a`8w5o8y7S9R92bLaV955ca 7(b3bW7l0I0p6J6L6N6P1Z6S0s0v9qbt0p0N7d8laGa-aIasaK3e6p2~8uax5k5AbM82aB9Nc06p7Z88a~aZ8c5Qaq8:b^9Ib`5PaMbO6o7Q8zc49ScjbRa}bU0p7/01bB7Dcga/ci7`b}aNb 5z80coa?bK7`5+8Ja}6t042Aa20U1b8l6=c96^048N6+cf9W0;6X0g7*5W6_afc,4$6X0xc+c%6}3=73169Dc:6.0_bAb=6D0d645.5 5:5|1c0E5?da2N2I0Y1Yd70d5;7B0!0$0(0V04.
III. Parcourir une matrice
Un double boucle for
Pour parcourir les éléments d'une matrice on va utiliser une "double boucle for".
À vous de jouer 6
Compléter ci-dessous pour obtenir l'affichage suivant :
la valeur aux indices ligne = 0 , colonne = 0 est 1
la valeur aux indices ligne = 0 , colonne = 1 est 3
la valeur aux indices ligne = 0 , colonne = 2 est 4
la valeur aux indices ligne = 1 , colonne = 0 est 5
la valeur aux indices ligne = 1 , colonne = 1 est 6
la valeur aux indices ligne = 1 , colonne = 2 est 8
la valeur aux indices ligne = 2 , colonne = 0 est 2
la valeur aux indices ligne = 2 , colonne = 1 est 1
la valeur aux indices ligne = 2 , colonne = 2 est 3
la valeur aux indices ligne = 3 , colonne = 0 est 7
la valeur aux indices ligne = 3 , colonne = 1 est 5
la valeur aux indices ligne = 3 , colonne = 2 est 1
Solution
m = [[1, 3, 4],
[5, 6, 8],
[2, 1, 3],
[7, 5, 1]]
nb_colonnes = 3
nb_lignes = 4
for i in range(nb_lignes):
for j in range(nb_colonnes):
valeur = m[i][j]
print("la valeur aux indices ligne =", i,", colonne =", j," est ", valeur)
À vous de jouer 7 : parcours par lignes
Ecrire la fontion get_lignequi prend en paramètres une matrice lst, et un entier i.
Cette fonction doit renvoyer la ligne i de la matrice lst.
.12801345/_1[Eylp):uS he(gnmé]=w-vi,tb;cf8dP372ors6ka050K0r0E0U0C0j0R0p0H0j0U0R0R0y010E0C0k010406050R0n0v0v0U0Q0i040o0P0j0n0/0P0u050d0_0{0}0 0@0k04051f181i0d1f0@0K0C0B0%0)0+0-0)0u0t0n0U0t0r0A0k0i0E0q160p0q0C0t0q0j1K0q0E0=050Y0F0j0r1r0*0,011J1L1N1L0E1T1V1R0E0Q1g1F0%120R0k0U0u0-0O011X1t010I0!0r0u0U0v0r1R1?1^1}1Z201V23250=0a0p0L0Q0P0k0P0R0C150u0p0W1;0Q0Q0r0H2q18280u1g0d1F2D1-1/1.1S0K2a1u0C0u222n1R1o1q0(1Y2N2P0u0P2T1R0k2w1g2B2D2*0^1@2r2V1~2Z0Q0|0j1R0U1I2w0I0-030e0e0H2!0r1N2Y0P0A0J0A0f0=0f180U2+2.0?2-292:1Z2=2@2_2{0r2}012 3133352Q380A1{040O3e3g1^3i2B2M013n0U2^1g2`0q2|2~30320W3x2Z3z0M0=0M3E2A3h0@3I3l0-3L3N053P3R3t3T3w2O3y390b0=0b3$193(3j2/1s3m0P2?3M3p3Q3r3S3v3V3^3X390c0=0c3~2*3)2.3J3-483;3u3U344e37390S0=0S4k403*433,453o3O3q3s4s3@363z0N0=0N4B3G4m3k4E3K4G474I494K3?4d4N390J0=0J4S2C1j2(182T2G0K1/2L3+014t2S1p1g2%0r2)3h3%3G054t53290C0K0-302B3z3b4I5b5d4c4u4)3a1|2e0r5k4t3W4w5o2D3f413J0T0=0W0I554/4D2W010z0=0p5F59425I0u0I0=1A0E0e1%2P5N5z4{0;040s5Z5H2;0=0#0E5)4n5#0=0D5N5M5*3m0=0C5/4V5I5$0l5@5!4W0P0=0A020t0E0G625_3,0F5,0C0R5.3 3G5^5:4W5$0m5N0@6k5G4n5j015e2.3z3B3/0p6w4%5m3_3A5p245r6x5l5u6A1R0d5y6d5J5L0p6W5}5P1~0R0K0=016(6r6Y6D5c6M5f393Z5i6-6F6O6:6J255s4M6H6;3$6T6#6V6W0h0u1-0w0r0$0m5M6t3i7d5z6E0e6/0A3{6=6|4(6H3{0p5q7n6G4f7k6Q6S6n5I72046W7D0p0A0p5-0p7b0n2P7H6h0E1W2t1N6i796*7f3I7h7j4h7m6M5t4v3z4h7r6K7t6^0A7!707z6!6$7C7E7F6D7J7L0p220/0r0Q7V2,7X6?7i6z4x3p7h7%5n4y7+6{7$6}7v4y5x5O3J7B7E110Q807J0p7L1W7S7P2s160E7H790p0w0j0w25760$0R8A8C0$8F8H7 0$7R2`5X1W5|7d6s846v867j4P7#6@7(394P8f6L8*5n8(7;5~7?730p6(018354855k7j4+8)6N8+386`8/945n923E7E635I5B042w0E0n0Q177d6m8@5`045-6+5;040g9t4W0u5{9x5 0=0x8}560d584:524=4 180E4^9N2J2E0U1U9K0d4?6s0W0Y0!0R04.
À vous de jouer 8 : parcours par colonnes
Compléter la fonction get_colonne qui prend en paramètres une matrice matrice, un entier colonne et renvoie la liste des éléments de la colonne colonne
Par exemple :
>>> m = [[1, 3, 4],
[5, 6, 8],
[2, 1, 3],
[7, 8, 15]]
>>> get_colonne(m, 0)
[1, 5, 2, 7]
>>> get_colonne(m, 2)
[4, 8, 3, 15]
>>>
.12801345/_1[Eylp):uS he(gn*mé]=w-vi,tb9;cf80dP372ors6ka050N0r0F0X0D0j0U0p0J0j0X0U0U0z010F0D0k010406050U0n0w0w0X0T0i040o0S0j0n0=0S0u050d0|0~10120`0k04051i1b1l0d1i0`0N0D0C0*0,0.0:0,0u0t0n0X0t0r0B0k0i0F0q190p0q0D0t0q0j1N0q0F0^050#0G0j0r1u0-0/011M1O1Q1O0F1W1Y1U0F0T1j1I0*150U0k0X0u0:0R011!1w010K0%0r0u0X0w0r1U1_1{201$231Y26280^0a0p0O0T0S0k0S0U0D180u0p0Z1@0T0T0r0J2t1b2b0u1j0d1I2G1:1=1;1V0N2d1x0D0u252q1U1r1t0+1#2Q2S0u0S2W1U0k2z1j2E2G2-0{1`2u2Y212$0T0 0j1U0X1L2z0K0:030e0e0J2%0r1Q2#0S0B0f0M3b0^0f1b0X2.2;0_2:2c2?1$2^2`2|2~0r3001323436382T3b3d1~040R3h3j1{3l2E2P013q0X2{1j2}0q2 3133350Z3A2$3C0B0P0^0P3H2D3k0`3L3o0:3O3Q053S3U3w3W3z2R3B3c0B0b0^0b3*1c3,3m2=1v3p0S2_3P3s3T3u3V3y3Y3|3!3~0c0^0c432-3-2;3M3;4d3^3x3X374j3a3~0V0^0V4p453.483:4a3r3R3t3v4x3{393#0Q0^0Q4G3J4r3n4J3N4L4c4N4e4P3`4i4S3~0L0^0L4X2F4Z472Z4$4b3=3@4f3_4h4z4.3d0H0^0H4?2G2*0r2G2W2J0N1=2O3/014y2V1s1j5a2,3k3+3J054y5p2c0D0N0:332E3#0f3s5x5z513Z4B3d5D0p2h0r5G4y5I5C1U0d3i463M0W0^0Z0K5r2F5W5i0A0^0p5$5v4_2@0K0^1D0F3y0j192S5-5(4#0@040s5|4I4`0u0^0 1:0D0J0r624s5i5 0E5-5,632@0^0u5^5`6b445s6j1$5 0l6h5}4`0S0^0B020t0F0I6w6s3:0G0^1Q0U0F6G6d5~0^0m5-0`6q5%3L5F015A2;3#3E3?0p6Y4,523}3D1 5N5P4R6-0B6%5U5.3M5*040p6~5,6V6`5i0U0N0^01776T6c5w5y6Z0e5B3~3%4N6*5H4A3#3%5M275O7d5Q7l7g5T5V6H01745+6 0h0u1:0x1Z0m0p670T697G0p0n2S0p6L0F1Z2w7R0r0U0E7N2u250=0r0T5M6n0u7P1Y5M0}0x2n2v1Z0,1@5_7+6p4q7a2u7j7f3d407i7c6+5R3~407o286;4-6?823*7x7z6}6 140T7$0p7H357_7P7H7O7?0D6M7T190F7Q7W0p0x0j0x287D0)0U8y8A0)8D8F7#0)7U2}8p6o7.0w7:0S7)8T7`79715W7 6#4l5E847k530B4m897q857t3d4m2G7w6P4`8h6 0p77018$2/6X8-800B4D838b6,4k3d4D8=9c869f7v8i6~6x6k048!5{716i8}216z040z6O4!4`5 0g7}3M0w0D0^0M9F6e0^0y9A5/1$9x0v9P4t6J042g9L6Q609Z64660X686a9$216u945q965G984U9b7r6=9e0B4U9h9_8c9{9@3H909o1$5Y040K4a9U5i65040Dab4#0S6|2Rag649W0T1{1D9,6t0^618%7x0u9W9Yav9vas9#aA9B9p7J7Lar0:6u6v9ta5aK6R9/6r4s8)1{3#4:9^8@8/4:9~aZ6?aXa3906 aO3N0^9r7{9:aBaP049EaE9Q3:0^afa`3M5 9OaN7x9x9zb3a?a.04aH9+a 9Ma^aJb9a~95b8b1a_bjaF3p6l7*9sbna{01b1aR6WaT978*548,9i8^0B55a$8.6?558{9m9ubo0:a72z0F0n0T1ab7bPb9a:bx2G5u1m2+1b5d1b0F5fb,2M2H0X1X5bb*5m6U0Z0#0%0U04.
Auteurs : Mireille Coilhac et Jean-Louis Thirot
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)