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) :
🐍 Script Pythonm = [[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
🐍 Script Pythonfor 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
🐍 Script Pythonprint(m[3][0])
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 :
🐍 Script Pythonm = [[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
🐍 Script Pythonprint(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
.
.128013cPw-7 sSfEbgn38xk9é]vei;(h4l,mdo0qp65_:2)à=tay1/[ur050F0w0S0T0x0C0h0g0b0C0T0h0h0R010S0x0J010406050h0Y0E0E0T0Z0U040i0G0C0Y0@0G0n050W0~1012140|0J04051k1d1n0W1k0|0F0x0v0,0.0:0=0.0n0m0Y0T0m0w0e0J0U0S0A1b0g0A0x0m0A0C1P0A0S0`050%0l0C0w1w0/0;011O1Q1S1Q0S1Y1!1W0S0Z1l1K0,170h0J0T0n0=0O011$1y010j0)0w0n0T0E0w1W1{1}221(251!282a0`0a0g0c0Z0G0J0G0h0x1a0n0g0#1_0Z0Z0w0b2v1d2d0n1l0W1K2I1=1@1?1X0F2f1z0x0n272s1W1t1v0-1%2S2U0n0G2Y1W0J2B1l2G2I2/0}1|2w2!232(0Z110C1W0T1N2B0j0=030M0M0b2)0w1S2%0G0e0L0e0V0`0g0V1d0T2:2?0{2=2e2^1(2`2|2~300w32013436383a2V3d0e20040g0O3k3m1}3o2G2R013t0T2}1l2 0A313335370#3D2(3F0o3h0o3L2F3n0|3P3r0=3S3U053W3Y3z3!3C2T3E3e0B3h0B3-1e3/3p2@1x3s0G2{3T3v3X3x3Z3B3$3 3(3e0L3h0L452/3:2?3Q3@4f3{3A3#394l3c3e0K3h0K4r473;4a3?4c3u3V3w3y4z3~3b3F0f3h0f4I3N4t3q4L3R4N4e4P4g4R3}4k4U3e0p3h0p4Z2H4#492#4(4d3^3`4h3|4j4B4:0e0s3h0s4^3O4u3=4}4O3_4Q4i4A3%4D3f0H0`0V0H5a4`4v4)4 5h525j4C3F0V3g045B5r485t4~4x514S4/403f3H0V3K0W3l3.4!5G5d4w4+4y4.545N0V3*5D3,5S3M2H1o2-1d2Y2L0F1@2Q5d4A2X1u1l2,0w2.3n5U5.4A612e0x0F0=352G5A3v686a535k6d0g2j0w6g5y555C3-4K4|0r0`0#0j633I5W4%0n0j0`0T0b0b0w0#0M0v3T0w0Y0Z6y6A4|0_040z6Q6s2_0`1/0w0T0Y6W5c4%6T0D6y0g6R6Y041,2U6(4$6S0`6,463N6.6X3s0`370C1b6?6|5.6 0=6T0P6-6/1(0G0`0e020m0S0y7c783R0l0`2T0S7m6)6_040N6y0|76662w6f016b2?3F3H5g7D5#6i3e206k296m7E6h5z7N1W5,7d0=0d3h0g7$6@4{230h0F0`020I0Y0G7k7.7:7=7/7;7l7A7z2;3P7K0M6c3e5)7J697S6o5N3*7P2a6n4T897W5T7n7+7#7$0k0n1=0t1#0N6.7|7(0g80820e424P80884m8y216l8d5M8D8z6r7u7*7,3I7$8Q0e0g6!6$0g0w0h0S0g0Y2U0g1S8Y1#2y8(0S8X2x02030o0s0y270@0w0Z0h7y8u8w7G4n6e867L7U3d8F7Q8H5$8D4o2I8h8M1(8j8P8Q0g8S6=1#0$1_730n8$0h1b8Z0#0Y0q8v8n0D8%8.2T1t6H0+8+1P8$9o2y72740w8}7A5G8 1}3F4F8A937T554F8b7R949!8g7B3Q9h9j160Z8_0g8r0.0g0j1b2D0x1M2B0n0v0G0x1#0C8:8=0y0t0C0t2a8n0g2t0S0Y0t0g0Q8%2 9m8/8;8?9E0x6H8%9J0w9B9N9r8*a5ap0n9F1#ax754s8~9Y8x4W9X997M0e4W9$aN95aL3L7}627 aJ900e4=aM878e8D4=aRa(8I5la$8L6^8N8k0g0k0q0w0E0J1!9=9Q7~4u9T0n3F57a%9(5N57a,b88Db6a;7)9g8O9j7i7=7j0ybk0y0g0E0g0R0g0Xbu0V9B0o9B0B0u9B0X0L0g0D0KbG0pbCbu0O9Bbx0g0o0u0g0ub0aXb2aZ9U3e5p92aS6p5nbb9Z5%5n9d9+5d9-8Qbob?bm0g6F6H6J6L1!6O0z0E9BbN0g0H7b8t9RaY6g8x5Bb$a-9a5lccb*8Ccg6q7X8ibi8Q5RaHc8bXcaa!5Qcdbccg7O8GceaOcwb.7Y01b;7$7?7`cK7^7@7{crb167bYb4b!842 8Ba)cg8acBcy5A845,9jcG6u042Baf0Z1c7A6~9f3?6Z0T1Z6#6%csa=1(6T0X8u5X0`9md46*0`0ud3c bgc_04aF9Pdd3Q6TbUc72;0W655/605;5}1d0S5@dv2O2Jc{1!2I5=7z0#0%0)0h04.
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 :
🐍 Console Pythonla 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
🐍 Script Pythonm = [[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_ligne
qui prend en paramètres une matrice lst
, et un entier i
.
Cette fonction doit renvoyer la ligne i
de la matrice lst
.
.128013cPw-7 sSfEbgn38ké]vei;(h4l,mdoqp65_:2)=tay1/[ur050D0u0O0P0v0A0h0g0b0A0P0h0h0N010O0v0G010406050h0U0C0C0P0V0Q040i0E0A0U0:0E0n050S0`0|0~100^0G04051g191j0S1g0^0D0v0t0(0*0,0.0*0n0m0U0P0m0u0e0G0Q0O0y170g0y0v0m0y0A1L0y0O0?050Z0l0A0u1s0+0-011K1M1O1M0O1U1W1S0O0V1h1G0(130h0G0P0n0.0L011Y1u010j0#0u0n0P0C0u1S1@1_1~1!211W24260?0a0g0c0V0E0G0E0h0v160n0g0X1=0V0V0u0b2r19290n1h0S1G2E1.1:1/1T0D2b1v0v0n232o1S1p1r0)1Z2O2Q0n0E2U1S0G2x1h2C2E2+0_1^2s2W1 2!0V0}0A1S0P1J2x0j0.030J0J0b2#0u1O2Z0E0e0p0e0R0?0R190P2,2/0@2.2a2;1!2?2^2`2|0u2~01303234362R390e1|040L3f3h1_3j2C2N013o0P2_1h2{0y2}2 31330X3y2!3A0o0?0o3F2B3i0^3J3m0.3M3O053Q3S3u3U3x2P3z3a0z0?0z3%1a3)3k2:1t3n0E2@3N3q3R3s3T3w3W3_3Y3a0I0?0I3 2+3*2/3K3.493=3v3V354f383a0H0?0H4l413+443-463p3P3r3t4t3^373A0f0?0f4C3H4n3l4F3L4H484J4a4L3@4e4O3a0p0?0p4T2D1k2)192U2H0D1:2M3,014u2T1q1h2(0u2*3i3(3H054u542a0v0D0.312C3A3c4J5c5e4d4v4*3b1}2f0u5l4u3X4x5p2E3g423K0q0?0X0j562D0g5A4|0n0j0?1B0O0J1(2Q5G5a432X010=040x5T5J4X0n0?0$0O5#4E5W5Y0B5T5I5-2=0?0v5,4o4|5Y0M5;5$5W0E0?0e020m0O0w5 5?3n0l5)0v0h5+403H5=5{4X5Y0K5T0^6h4:3J5k015f2/3A3C3:0g6t4(5n3`3B5q255s6u5m5v6x1S0S5z6a0.0d0?0g6U5I6q5U3K0h0D0?020F0U0E676%6)6+6(6*686X6p2-6s5d6J5g3a3!5j6_6C6L6|6G265t4N6E6}3%6Q016!6T6V0k0n1.0r0u0%0K6W4m5`5b6 0J6{0e3|6~754)6E3|0g5r7w6D4g7t6N6P6k5W7c046V6V0e0g5*0g7l0U2Q7P6e0O1X2u1O6f7j6o7o2s6B7r6w4h3q7*5u4w3A4i7A6H7C710e4i5y6Y4|7K7M6U7O0v7R7T0g230:0u0V7%6X5A7*7s4z7v6J7:5o4z7@748j767E8h797I1 806V120V897R0g7T1X7!7X2t170O7P7j0g0r0A0r267g0%0h8I8K0%8N8P880%7Z2{5R1X5_6=7(6A7q7s4Q8i707;3a4Q8n6I8;5o8/8t4W7J6#7L6V6,6:936.6-6;7n8d6^5l7s4,8:6K8=39738_9g5o9e3F7M601 5C042x0O0U0V186X6j8~5@045*8+5|0?0T9F5%5^9J5.0?0s8c2-0S594;534?50190O4_9Y2K2F0P1V9V0S4@6p0X0Z0#0h04.
À 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 :
🐍 Console Python>>> 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]
>>>
.128013cPw*-7 sSfEbgn38k9é]vei;(h4l,mdo0qp65_:2)=tay1/[ur050F0w0R0S0x0C0i0h0b0C0S0i0i0Q010R0x0J010406050i0X0E0E0S0Y0T040j0G0C0X0?0G0o050V0}0 11130{0J04051j1c1m0V1j0{0F0x0v0+0-0/0;0-0o0n0X0S0n0w0f0J0T0R0A1a0h0A0x0n0A0C1O0A0R0_050$0m0C0w1v0.0:011N1P1R1P0R1X1Z1V0R0Y1k1J0+160i0J0S0o0;0O011#1x010k0(0w0o0S0E0w1V1`1|211%241Z27290_0a0h0c0Y0G0J0G0i0x190o0h0!1^0Y0Y0w0b2u1c2c0o1k0V1J2H1;1?1=1W0F2e1y0x0o262r1V1s1u0,1$2R2T0o0G2X1V0J2A1k2F2H2.0|1{2v2Z222%0Y100C1V0S1M2A0k0;030M0M0b2(0w1R2$0G0f0U0H3c0_0U1c0S2/2=0`2;2d2@1%2_2{2}2 0w3101333537392U3c3e1 040O3i3k1|3m2F2Q013r0S2|1k2~0A303234360!3B2%3D0f0p0_0p3I2E3l0{3M3p0;3P3R053T3V3x3X3A2S3C3d0f0B0_0B3+1d3-3n2?1w3q0G2`3Q3t3U3v3W3z3Z3}3#3 0L0_0L442.3.2=3N3=4e3_3y3Y384k3b3 0K0_0K4q463/493;4b3s3S3u3w4y3|3a3$0g0_0g4H3K4s3o4K3O4M4d4O4f4Q3{4j4T3 0q0_0q4Y2G4!482!4%4c3?3^4g3`4i4A4/3e0s0_0s4@2H2+0w2H2X2K0F1?2P3:014z2W1t1k5b2-3l3,3K054z5q2d0x0F0;342F3$0U3t5y5A523!4C3e5E0h2i0w5H4z5J5D1V0V3j473N0r0_0!0k5s2G0h5X5j0o0k0_1E0R3z0C1a2T5%5w4`220^040z5^5*4$0o0_101;0x0b0w5 4J4{5|0D5^5)6a2^0_0o5;5?68455t6g1%5|0P6e604{0G0_0f020n0R0y6t6p3;0m0_1R0i0R6D4t5j5|0N5^0{6n2G5X5G015B2=3$3F3@0h6V4-533~3E205O5Q4S6*0f6!5V5_3N0d0_0h6{5)6S6@5j0i0F0_020I0X0G6B74767875776C6~6R2:3M6%0M5C3 3(4O7j5R4B3$3(5N285P6W5I7r7m5U5W6E01716`6|0l0o1;0t1!0N0h640Y667M0h0X2T0h6I0R1!2x7X0w0i0D7T2v260?0w0Y5N6k0o7V1Z5N0~0t2o2w1!0-1^5=7;6m4r694t7j7l3e417o5z7x7q54406,7v6.4.6:883+7D7F046|0h150Y7,0h7N367 7V7N7U7|0x6J7Z1a0R7W7$0h0t0C0t297J0*0i8F8H0*8K8M7+0*7!2~8w6l7@0E7_0G7/8!806Q835x8a6X1|3$4n898h6)4l3e4n7u298_5S4m7B6 4$8n8p797d987b7a7e826~6U8:7k6Y4D5F9h8c6:4E8~7w6(913e4E2H3j8p6u6h048+5@6~6f6M4$6w040Q6L4#6b0_0W8.5`1%0E0x0_0H9Q3N5|0u9L9R0;9I0e9#4u6G042h9X6N0_5~9f7D62047P7R9/4$6r8-9?849h860f4V8^8b6/8{a48f8 a78ia9a53I9y7D5Z040k4b9*5+0_0xao9H6_042Sas4{0o9,0Y1|1E9|9N5}aE2^9,9.a09M5{9;aH3q630S6567aP0;6r6s9E9z6q0_6P7f9X859j3e4;a69s7za,ab9r7y8da-ah8p6|a!3;0_9C815r7D5|9PaL9$3OaqaV019Zax229I9KaZ9@aRaTb16o9GaFb57hbn9Aarb69Y0_0ubpb2braQ046jb0babca(bua*8=3 56a.a@6:569q90a:0fbMa`6{a}01ak2A0R0X0Y1bbhbAa~9B166l9 2:0V5v1n2,1c5e1c0R5gb{2N2I0S1Y5cb_5n6R0!0$0(0i04.
Auteurs : Mireille Coilhac et Jean-Louis Thirot
# Tests
(insensible à la casse)(Ctrl+I)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)