Aller au contenu

Listes de listes ou de dictionnaires

Considérons le tableau de couleurs ci-dessous décrivant différentes couleurs à l'aide de quatre descripteurs :

  • leur nom,
  • leur composante rouge (de 0 à 255),
  • leur composante verte (de 0 à 255),
  • leur composante bleue (de 0 à 255).
Couleur Nom Rouge Vert Bleu
 Noir000
 Blanc255255255
 Rouge25500
 Vert02550
 Bleu00255
 Jaune2552550
 Cyan0255255
 Magenta2550255
 Argent192192192
 Gris128128128
 Bordeaux12800
 Olive1281280
 Violet1280128
 Marine00128

Listes de listes

Il est possible de représenter ces informations dans une liste Python. Chacun des éléments de cette liste est lui-même une liste décrivant une couleur :

liste_couleurs = [
    ["Noir",       0,   0,   0],  # Couleur 0
    ["Blanc",    255, 255, 255],  # Couleur 1
    ["Rouge",    255,   0,   0],  # Couleur 2
    ["Vert",       0, 255,   0],  # Couleur 3
    ["Bleu",       0,   0, 255],  # Couleur 4
    ["Jaune",    255, 255,   0],  # Couleur 5
    ["Cyan",       0, 255, 255],  # Couleur 6
    ["Magenta",  255,   0, 255],  # Couleur 7
    ["Argent",   192, 192, 192],  # Couleur 8
    ["Gris",     128, 128, 128],  # Couleur 9
    ["Bordeaux", 128,   0,   0],  # Couleur 10
    ["Olive",    128, 128,   0],  # Couleur 11
    ["Violet",   128,   0, 128],  # Couleur 12
    ["Marine",     0,   0, 128]   # Couleur 13
]

Remarque

On a ajouté des espaces afin de simplifier la lecture. Elles[^1] ne sont pas indispensables.

[^1]: En typographie, « espace » est un nom commun féminin.

Les informations décrivant une couleur étant décrites dans des sous-listes, elles sont accessibles en utilisant les indices :

Indice 0 1 2 3
Descripteur "nom" "rouge" "vert" "bleu"

Il est donc possible de récupérer le nom de la troisième couleur de la liste en faisant liste_couleurs[2][0] qui renvoie "rouge".

Activité 1 - Liste de listes

On considère la liste décrite ci-dessus.

Cochez la ou les bonnes réponses.

  • On peut accéder à la composante rouge de la première couleur en faisant liste_couleurs[0][0]
  • liste_couleurs[4] n'existe pas car il n'y a que quatre descripteurs
  • liste_couleurs[5][2] désigne la composante verte du jaune
  • [c[0] for c in liste_couleurs] permet de récupérer les noms de toutes les couleurs
  • ❌ liste_couleurs[0][0] permet de récupérer le nom de la première couleur
  • ❌ liste_couleurs[4] renvoie toutes les informations décrivant le bleu
  • ✅ liste_couleurs[5][2] désigne la composante verte du jaune
  • ✅ [c[0] for c in liste_couleurs] permet de récupérer les noms de toutes les couleurs
Activité 2 - Requêtes (listes)

On travaille toujours avec la liste de listes décrite ci-dessus.

Compléter le script afin de d'effectuer les requêtes proposées :

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013rt=7flb)1 2eà/vyg,]8sw9nuph5aS(o3qk_i46P;é[cdm0050T0m0c0D0L0g0v0k0S0g0D0v0v0d010c0L0A010406050v0z0U0U0D0b0q040E0G0g0z0:0G0y050o0`0|0~100^0A04051g191j0o1g0^0T0L0p0(0*0,0.0B0L0r0B0g1x0B0c0?050Z0h0g0m1s0+0-011w1y1A1y0c1G1I1E0c0b1h0c0B0(130v0A0D0y0.0l011K1u010f0#0m0y0D0U0m1E1%1)1.1M1;1I1@1_0?0a0k0O0b0G0A0G0v0L160y0k0X1#0b0b0m0S2e191|0y1h0o1Z2r1W1Y1X1F0T1~0.1A0y1?2b1E1p1r0)1L2B0L2D0y0G2H1E0A2k1h2p2r2V0_1(2f2J1/2O0b0}0g0?0k0j2o2Z0@2Y1}2#1M2%2)2+0l2.1)2:2p2A012^0D2*040k0H2|2q0^2 2?0.32340k0M382~2Z303e2+0C3i3a3k3c310G2(332+0N3p2;2!1t2@3u2_350e3z3b3C3d3E3w350u3I3r3K3t3v3f0x3Q2=3S3m040j0V3X3B2K3T3F0j2-1a2/3q3Y3*3!0j2{3/2}3;3)2$3M340j373`393A3l3 0?0j3h433j3=3~3U483o4b3|464f3#3y4i453s3@3H4b1k2T192H2u0T1Y2z3s0S2P1`1h4x1i4v2X4t4D0X2U3R3*0S0j0?030k1A0v0c0m0K0j0k0m4X4V0D4V0L4X1J0X0%2O0U0%4/1#0z1I0z0b0v3(3l0?4W4Y4!3i0k4p3S0G0?0d54563*0=040R3i5c2$0?0S5h3J5d0?5g4t5n1/0U0L0?3%5r4P1/5e0t5b5s1M0J0?0f3u5D5z2@5k5K4d1M0G0w0?2M5O3}5M04514Z4D4_0m4{4}5y5P0.5B3p4j4C4S044U5Z0K0l4$4(0*4+4-2g4%1#0U2a0v1)4Y0%0p0m0b665 0%5#4`4|4~4q504,523_2V555E0.58045a4b6o5L5,5p5m6w315N5*5W6x5f6z5+015u0?422X6p015-6u5i5F5H5J6R6O0y6C6n6S6q5S045U6W6A6Y5Y6k5!0G5$5(6H6E6P0?5C4i5/3S4R4T5}520H5`0c4)704.604;4?606e5%4|2g17745|4D622b651J280z0r1J4%740`0A0Q0b0L7d1J6:0k0Q0r331J0n0k0l0V5x2V6|3?6j4-0K6M2/6v6I6r6t6!6O5e5q6N6+6Z2/6#6^6G6D306K047L7)7Z6_5V305G045I0b7^6i045l6*7V6%6)7Y7%6-7Q7c6=826@7`0L0f7~3Z7(2}7*7!6?7.5v3#8n3s6Q867V0?020r0c0P7X7T7*7/7J7;8k7?046`7M7N1/6~5=760K0M73755Z6c0k798W8a7e0T7g757j637m0k7o7q8T4X7x2m0m1_0y7t0z7v7x7z0k7H5|1H5%0m6h8i88524a8u6@7W8h5o7,7$6I6,819f6@8m7-3s7/8G2q8l7@8c7_6U7}9t7 9i8C6O5R5T189x955@8!5)999u6(8g9F7O808r3S9l9j8o489R9d8K9A6A6r8x8z8B2}7U6@9h9X5A6y9m3S7/7S8H6A5B9Z3{8M1M8O5?6.0K0C8T5|8V4@8Y4@9I7f8^8(0G7k648^1J910z7r4(0A140%0r0b1)2h0Iak75686a7r7h4*8-934o6X7P524h9K3s9b9O9/9e7=879z9^6I9TaP6I9o9.1M8t9!6I7`7|9c5j9QaM5Q849EaJ9Ga19Ia)6T9Ma@3d8j9q8I7#aV6@9?aY6F9{2q9+309$8y8Aa`6Ba+9U8s9:bf9=8p6mb030a!9*7*9C04asbc9-9;9da aSb18p9@a}9_9sa:3*b99(bua|4OaTbhbm9n8p3.bi9Yb50@9}0.9 8Q0Na44*a6601W0;1I0c0%7|0U0Q0%1(0b4Vb)284,618*ah7a0(0B0Dau1J8!949P5@4nbG1/aLcaaZ5p0Fb3bdaRbDbNaObz9V8qbwaN0t0sbKbebP9SbOcnbQ0?blczcx8Jcta,a{cvcDbxchb2cqce8J0ibca%6VcdcIcj35bqa.cu9H6:6f9Jcw9Y3z0o4M0m2r2Sc/4w1q4y2u2x2s0D912r4x0^0o0X0Z0#0v04.
Activité 3 - Nuances de gris (listes)

On travaille toujours avec la liste décrite ci-dessus.

Il est possible de convertir une couleur en noir et blanc en donnant à chacun de ses canaux la même valeur obtenue par la formule suivante :

\[Y = 0,299\times Rouge + 0,587 \times Vert + 0,114 \times Bleu\]

Cette valeur \(Y\) est appelée niveau de gris.

Par exemple pour le rouge on obtient : \(Y = 0,299 \times 255 + 0,587 \times 0 + 0,114 \times 0 \approx 76\).

Compléter le code ci-dessous permettant d'obtenir la liste contenant le niveau de gris associé à chaque couleur de liste_couleurs.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013rt=7*flb)D1 ê2e/vyg.:,]8swR9nuph5aS(oq3ùk_i4+V;Pé[cdxm0050!0p0c0I0R0h0z0m0Z0h0I0z0z0d010c0R0F010406050z0E0$0$0I0b0s040J0L0h0E0{0L0D0m020I0$0F0V0m0B0p150b0M0E0p0z050q12141618100F04051D1w1G0q1D100!0R0r0:0=0@0_0G0R0t0G0h1U0G0c0~050+0i0h0p1P0?0^011T1V1X1V0c1%1)1#0c0b1E0c0G0:1b0z0F0I0D0_0o011+1R010g0-0p0D1j0p1#2123281-2b1)2e0$2g040a0m0W0b0L0F0L0z0R1e1g0)1 0b0b0p0Z2B1w2i0D1E0q1}2N1`1|1{1$0!2k0_1X0D2d2y1#1M1O0;1,2X0R2Z0D0L2%1#0F2G1E2L2N2^11221g2)292.0b150h0~0l2K2|2N2=0p2N2%2Q0!1|2V2~1-0Z2/2q0(1N1E392@3736231E3j0)3q2j3h0_0D0~0D1N0p0I0E0#0Q0t0b0R1v1x370m2{3y1Q1-0L0~0d3s2M3Q2L2W010}040Y3Y3x2}3T0_0$0g0~0%0u0o0C0C3+3!2|3$3V040f3{3R3-2*013B043j0E1)0E0b3+433$3(3*3O3t4f3z010$0R344e3#4m3(0x424s3.013 0T4w3}4m3:3=0u0H0y0e4C3S453 414j3Z4l4y47494b4d4Q3,4g0~4i2`4x454o0~0o4r4D4y4u4L44294A4;3$4F043?0l0l0S4^4m4O504T0~4V0p4c4-4M294h594=1-4*040N5d4!044v4Y3|5a1-0P0~0g0L4X2^5o5e3A550L4a575v3P4S4N0A0~2,5345471X0z0c0p0Q564c3N4%4.454:4Y100q3v3a1H2?1w3c1w0c3e5-2T2O0I1(5(0q3c1C4Z4m2G0$0Q0g0I0P5R0G0N0~1o1q1s1u0m0v4e1J0 1F040k230/1)0:0?0m2=0X0z2d0c0w0m1f6p5B2F0,0c0m3G0@0R0m1d0-3M0p0b0m6m051p040E0D220Z0P2,0t1w6Q6c1H6g2%3$1/1W1Y1!3o5*2`4Y055%5|54043D0r3F3H3J3L5V5F4(4?3W5L5b4#5j4E3;4{3@3_753U0~4P5w5G2 0~2v0E0t0p7e0_4@5n7j5f7a3?4I4K7t727f407q460~6{0b0c7E7s7i7B3/7w0u4}4 7A5X737D7T5p5z045@0E7E5r045t5E3t5x5k0K786^2.0$7:5Y0~0w7E477m7o7@76047`7X5y7F047H7J6;7N3%7_7{0~7#7 1-3(0j7K5I045K833$5N3M5Q5S5B4W704k8a5Z2^5#6?5)5^5`6h0U0L0R2G0m0$0n2p6v0!6k6N0I8L1u4c1*0L0O6N1*6=3k6)1Y1;1Z2h7U1-477=6e6?0m0D001u6C220/6I5O0X6#6f1L1N8(1:6,2;6/3r6;8C8a8/3E3G3I3K3M7K748o4t77898-7O4G3^3`9l4y529u5M7l5B7~9x7V4B9C7v4G7y9j7W7M9p85879J9E9L7Y4n7P7R9J7h719M478f9F0_7(7*7E3(7/9o9S470Q8g0_3(829R847|9A7p9-849?8d866L885W9S9 9$859#a49~0~8ja70L8l8n9^8p0~5O8s5T0b8w2M7u9=0~5m8A1w8C1J5*5_3n5#0)0+0-0z04.

Listes de dictionnaires

Une autre approche est possible : au lieu de représenter les données dans une liste de listes, on utilise une liste de dictionnaires. Chaque couleur est décrite par un dictionnaire dont les clés sont les noms des descripteurs et les valeurs la valeur associée.

dico_couleurs = [
    {"nom": "Noir",     "rouge":   0, "vert":   0, "bleu":   0},
    {"nom": "Blanc",    "rouge": 255, "vert": 255, "bleu": 255},
    {"nom": "Rouge",    "rouge": 255, "vert":   0, "bleu":   0},
    {"nom": "Vert",     "rouge":   0, "vert": 255, "bleu":   0},
    {"nom": "Bleu",     "rouge":   0, "vert":   0, "bleu": 255},
    {"nom": "Jaune",    "rouge": 255, "vert": 255, "bleu":   0},
    {"nom": "Cyan",     "rouge":   0, "vert": 255, "bleu": 255},
    {"nom": "Magenta",  "rouge": 255, "vert":   0, "bleu": 255},
    {"nom": "Argent",   "rouge": 192, "vert": 192, "bleu": 192},
    {"nom": "Gris",     "rouge": 128, "vert": 128, "bleu": 128},
    {"nom": "Bordeaux", "rouge": 128, "vert":   0, "bleu":   0},
    {"nom": "Olive",    "rouge": 128, "vert": 128, "bleu":   0},
    {"nom": "Violet",   "rouge": 128, "vert":   0, "bleu": 128},
    {"nom": "Marine",   "rouge":   0, "vert":   0, "bleu": 128},
]

Au sein de chaque dictionnaire, les informations sont identifiées par les clés. Il est plus facile de récupérer chaque valeur (sans avoir à compter les indices !).

Il est possible de récupérer le nom de la troisième couleur de la liste en faisant liste_couleurs[2]["nom"] qui renvoie là encore "rouge".

Activité 4 - Liste de dictionnaires

On considère la liste décrite ci-dessus.

  • On peut accéder à la composante rouge de la première couleur en faisant dico_couleurs[0][rouge]
  • dico_couleurs[4][2] renvoie la composante bleue du bleu
  • dico_couleurs["jaune"]["vert"] désigne la composante verte du jaune
  • [c["nom"] for c in dico_couleurs] permet de récupérer les noms de toutes les couleurs
  • ❌ "rouge" est une chaîne de caractères, les guillemets sont indispensables
  • ❌ Il faut faire dico_couleurs[4]["bleu"]
  • ❌ La couleur jaune est à l'indice 5 de la liste
  • ✅ [c["nom"] for c in dico_couleurs] permet bien de récupérer les noms de toutes les couleurs
Activité 5 - Requêtes (dictionnaires)

On travaille toujours avec la liste de dictionnaires décrite ci-dessus.

Compléter le script afin de d'effectuer les requêtes proposées :

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013rt=7flb)1 2eà/vyg,]8sw9nuph5aS(o3qk_i46P;é[cdm0050T0m0c0D0L0g0v0k0S0g0D0v0v0d010c0L0A010406050v0z0U0U0D0b0q040E0G0g0z0:0G0y050o0`0|0~100^0A04051g191j0o1g0^0T0L0p0(0*0,0.0B0L0r0B0g1x0B0c0?050Z0h0g0m1s0+0-011w1y1A1y0c1G1I1E0c0b1h0c0B0(130v0A0D0y0.0l011K1u010f0#0m0y0D0U0m1E1%1)1.1M1;1I1@1_0?0a0k0O0b0G0A0G0v0L160y0k0X1#0b0b0m0S2e191|0y1h0o1Z2r1W1Y1X1F0T1~0.1A0y1?2b1E1p1r0)1L2B0L2D0y0G2H1E0A2k1h2p2r2V0_1(2f2J1/2O0b0}0g0?0k0j2o2Z0@2Y1}2#1M2%2)2+0l2.1)2:2p2A012^0D2*040k0H2|2q0^2 2?0.32340k0M382~2Z303e2+0C3i3a3k3c310G2(332+0N3p2;2!1t2@3u2_350e3z3b3C3d3E3w350u3I3r3K3t3v3f0x3Q2=3S3m040j0V3X3B2K3T3F0j2-1a2/3q3Y3*3!0j2{3/2}3;3)2$3M340j373`393A3l3 0?0j3h433j3=3~3U483o4b3|464f3#3y4i453s3@3H4b1k2T192H2u0T1Y2z3s0S2P1`1h4x1i4v2X4t4D0X2U3R3*0S0j0?030k1A0v0c0m0K0j0k0m4X4V0D4V0L4X1J0X0%2O0U0%4/1#0z1I0z0b0v3(3l0?4W4Y4!3i0k4p3S0G0?0d54563*0=040R3i5c2$0?0S5h3J5d0?5g4t5n1/0v1,04020I0z0G0c0P4;5x5z5B5m4P1/5e0t5b5s1M0J0?0f3u5M5I2@5k5T4d1M0G0w0?2M5X3}5V041p4D0K4D4_0m4{4}5r5U0.5K3p4j4C4S044U514Z0l4$4(0*4+4-2g4%1#0U2a0v1)4Y0%0p0m0b6g690%5/4`4|4~4q504,523_2V555N0.58045a4b6y5^015e5q2X6z315W5@5Y5_5p5H6P015u0?5E5A0P1H5;6X5G6O5)6Q045L6E5i5O5Q5S6-6L0y6N6x6.6A5#045%6=6G6@5+0L5-6o5;6q6(305`4i5|3S4R4T67520H640c4)7g4.6a4;4?6a755=2g177k664D6c2b6f1J280z0r1J4%7k0`0A0Q0b0L761J0G0z0k0Q0r331J0n0k0l0V3%4o6?6t4-0K426_6L6B6D7,6G6I6S6)6M045l783s7=7{3S6V5w5y6Y5D826%6K7;0?6,7:6T5P045R0b5(4 7_8h3s5!5$186 6T715,0G5.7Q6p5?8b7@8d0L0f8k3Z6^2/6`6H6R7~3*0U0L487?79898D3*6B020r5B7/2/6F6T8M0?7Z7#876T7a2V067c4Q5~606u4Z0M7j7l616m0k7p8|7s4|7u0y7w4*7y6d7B0k7D7F8_4X7M2m0m1_930k7J7L7N4{7W7l6!0z0m6r8E04610K4a8y307.8S5J8J8*7@717`9F8Q5f8P3s806$5C0G0U9P9M3S8,8Z8H8d8f9C5*9I9X7-6|6~9z6s72748v768x9(6G8A8C8p9G8F2}8H7}9J3s8$3#9U5o6+9#6A6W8W0P8Y2}8!9{8j8K9D9Lah1Ma27+8G6L5K8a3:8/1/7e5 7m0K0C8_668{4@8~4@904?7v7l967A931J9q7G4(0A140%0r0b1)2h5y1J666i6k7G94997Q7F9t3?7(524h9,5759a78Iaja09u9%9}ap9Eao6G9O859Q9Sb3a4aiarad9Y6:8g9`8ia|2qae9A9*8oa;a-9.8taGa@9^a@9Hb71M9 b08#8N04ana}88a6be8la98Xbt9|2q9~a bDbz8%bv6*b9bh8H8m04aWbKaga`a56Jby7@ambSa^bU35bWbIabb!bg4O8+bObM6La23.b$b8b.8.8Hav8=7)0NaA4*aC6a1W0;1I0c0%8f0U0Q0%1(0b4Vcb284,6b97aM7q0(0B0DaY4^6pa,5j9v8?0K4nbm1/9BbG9V5p0Fb,buak6*b(bP7@b25F0P9a0m9TcQb-0sb?b,bxcT30cV6Ya#0cc!b bw89c%cKbnb@bNa_b)c,5v9P9qc;c~7|890ibrbcc(c_cIbkb!8s8u5:5=c)8R4o0o4M0m2r2Sdo4w1q4y2u2x2s0D6!2r4x0^0o0X0Z0#0v04.
Activité 6 - Nuances de gris (dictionnaires)

On travaille toujours avec la liste de dictionnaires ci-dessus.

Reprendre l'exercice « Nuances de gris (listes) » avec cette structure de données.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013rt=7*flb1 2e/vyg.]8sw9nuph5aSo3qk_i4+P;[cdxm0050Q0m0c0C0J0h0u0k0P0h0C0u0u0d010c0J0z010406050u0y0S0S0C0b0p040D0E0h0y0.0E0x050n0^0`0|0~0?0z04051e171h0n1e0?0Q0J0o0$0(0*0,0A0J0q0A0h1v0A0c0;050X0i0h0m1q0)0+011u1w1y1w0c1E1G1C0c0b1f0c0A0$110u0z0C0x0,0l011I1s010g0Z0m0x0C0S0m1C1#1%1,1K1/1G1=1@0;0a0k0M0b0E0z0E0u0J140x0k0V1Z0b0b0m0P2c171`0x1f0n1X2p1U1W1V1D0Q1|0,1y0x1;291C1n1p0%1J2z0J2B0x0E2F1C0z2i1f2n2p2T0@1$2d2H1-2M0b0{0h0;0j2m2X0=2W1{2Z1K2#2%0;0l2+1%2-2n2y012=0C2(040F2_2o1i2R172F2s0Q1W2x2:0,0P2N1^1f391g372V182,053g0V2S2X2}0x0;0x1o0m0C0y0R0I0q0b0J0u34040k2.2Y1r1K0E0;0d3J3L2|3e010:040O3J060k3%3U3u3W0S0g0;0T0r0l0w0w3T3M2}3Q040f3@3V3O0,3w043g0y1G0y0b3J3^3W3Y3!3o2`493 010u1*04020G0y0E0c0N260y0q0m4l4n4p483~2I3X0;0s3}3*4g3`0L4E2/4g3,3.0r0B0t0e4J3N4A3`3|4d2o3)4K4A414345474X3t4!1-4b4y4F4A4i0;4v4o0N0o0m0b0c4@4x4*4f4A3Y4D4*4Z4T1-4H4S2}4M043/0j0j0K5a3W4V5i4g4$0E440m464/4,1K4.504z1-4=4k4m4^1F5q4~0N5s575u4C5l4A0H0;0g0E4)2T563v0;4%5q5R2,5T5j0v0;2K5L2!0;1n3g0I5W463I4*0?5x5J04542T0?0n3r0m2p2Q5 381o3a2s2v2q0C5D2p395|0V0X0Z0u04.