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. Elles1 ne sont pas indispensables.

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".

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
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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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

.128013,f]gSa3/9moàcbPérhd_)wi;tsy(25q4e7k8 [n6=puv10l050t0H0z0g0x0V0A0L0n0V0g0A0A0P010z0x0Q010406050A0R0k0k0g0r0B040f0l0V0R0:0l0N050i0`0|0~100^0Q04191g051j0i1j1l1g0^0t0x0S0(0*0,0.0s0x0e0s0V1z0s0z0?050Z0o0V0H1u0+0-011y1A1C1A0z1I1K1G0z0o0l0t101H0r1h0z0s0(130A0Q0g0N0.0D011M1w010c0#0H0N0g0k0H1G1.1:1^1O1{1K1~200?0a0L0p0r0l0Q0l0A0x160N0L0X1,0r0r0H0n2l19230N1h0i1*2y0z1(1%1)0t250.1C0N1}2i1G1r1t0)1N2I0x2K0N1!1s1G0Q2r1h2w2y2$0_1/2m2Q1_2V0r0}0V0?0L0T2v2*0@2)242,1O2.2:2=0D2^1:2`2w2H012 0g2;040L0h332x0^362}0.393b0L0G3f352*373l2=0E3p3h3r3j380l2/3a2=0O3w2{2+1v2~3B303c0I3G3i3J3k3L3D3c0K3P3y3R3A3C3m0j3X2|3Z3t040T0U3(3I2R3!3M0T2@1a2_3x3)3;3+0T323_343{3:2-3T3b0T3e413g3H3s460?0T3o4a3q3|453#4f3v4i434d4m3,3F4p4c3z3~3O4i1i2!192O2B0t2F370n1!211h4E1k4C2(4A4J0X2#3Y3;0n0T0?030L1C0A0z0H0u0T0L0H4%4#0g4#0x4%1L0X0%2V0k0%4^1,0R1K0R0r0A3/3s0?4$4(4*3p0L4w3Z0l0?0P5a5c3;0=040M3p5i2-0?0n5n3Q5j0?5m4A5t1_0k0x0?3.5x4V1_5k0d5h5y1O0J0?0c3B5J5F2~5q5Q4k1O0l0w0?2T5U445S04574)4J4 0H51535E5V0.5H3w4q3z4X4Z4;4?0u0D4,4.0*5|4(2n4-1,0k2h0A1:4(0%0S0H0r6c650%5+5052544x564=58402$5b5K0.5e045g4i6u5R5=5v5s6C385T5:5$6D5l6F5;015A0?6s2_5o1O5?6A6U0.5M045O0r5#55045r6X6v015X5Z186,6G0N6p5}6k5-6m6J376W2$065^3Z5`044!5)0u0h600z4/634@664`4|666`5.2n177b624J682i6b1L2f0R0e1L4-7b0`0Q0q0r0x6{1L0l0R0L0q0e3a1L0m0L0D0U5D706Y6H5(6q4)496t7U6x6z7!6-5k5w2(6-6@6*6N6K017*7:376Q047S6T7)0?5I6=6O6!6$6(6o7/807;6/045!876)777j6|7(6G6!0x0c843*6I7,6G7?6}3z7_3^8p6O6 2_6B6O6x020e0z0y7%8z7U7_7Q7{347U8y42724W4Y757d0u0G7a7c5)6i0L7g8#8f4|7m7c7p697s0L7u7w8Y4%7D2t0H200N7z0R7B7D7F0L7O621J5-0H6n8n7W5}4h8h8B5f8m5u6M8s996+8w7;8r9m7^5B7`7@3z8P2x8A7;825P8c859l8I6-898b9d7;7.8e7H6l5/9I378j8l9B9k9t3Z9o7|6G8u9V9h7 9P3z8C8E0y9g5p869p9u6E9j3;7_7Z9Y8x7~9%3`8R1_74767X0u0E8Y628!4}8%4}8)7l8|8,0l7q6a8|1L950R7x4.7A7C7E517G7I7K7M927c6e6g7x7b934:8;974v7-6^584o9(5d9f9T9h7+9`9J8oaS6~9=9:3Z7_8M2x8O7~9-5L5N9AaM3}aU349x379G6;a-9.9L5,5.a)6Z5Z9Sa^5%9D8N7}9iaY9@9r9_b48qa(aP1_9*8F8Ha:7U7.b3a$b5aRbb6O8K9#5Gbdb16w5Y041:0ta}7Vbm4U9{b6aV8tb9bt6Vbv9E6Gbg8GbCblbL6Lbpbn9Z9r8vbI9W9|5@7Ua18V0Oa64:a8662C0;1K0z0%6$0k0q0%1/0r4#b:2f4=678.aj7h0(0s0g0Fam4~6l98a.9a584ubw6.aOcj7*0CbUbDcp9Xbq7;9!9?bu040d0bbSa/bXbGbWbFcu9r6SctaWcycAbeb2craXb#b80?bacD9n7~0vbC9z6%cO3kcC3c7#by9HbO6O9Ka38)cQcy3G0i4S0H2y2Zc{4D1s4F2B2D2z1Z1#2B0g952y4E0^0i0X0Z0#0A04.
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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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

.128013,f+x]gSa.:D3/9mocbPérhd_)wi;tsy*(25Rùq4e7k8 [Vn=puêv10l050x0O0D0i0B0%0E0S0r0%0i0E0E0W010D0B0X010406050E0Y0p0p0i0v0F040h0q0%0Y0{0q0V0S020i0p0X0C0S0K0O150v0M0Y0O0E050n12141618100X041w1D051G0n1G1I1D100x0B0!0:0=0@0_0w0B0g0w0%1W0w0D0~050+0s0%0O1R0?0^011V1X1Z1X0D1)1+1%0D0s0q0x181(0v1E0D0w0:1b0E0X0i0V0_0I011-1T010c0-0O0V1j0O1%282a2f1/2i1+2l0p2n040a0S0t0v0q0X0q0E0B1e1g0)260v0v0O0r2I1w2p0V1E0n242U0D2221230x2r0_1Z0V2k2F1%1O1Q0;1.2(0B2*0V1~1P1%0X2N1E2S2U2 11291g2:2g2^0v150%0~0#2R330 322q351/37390~0I3d2a3f2S2%013k0i3a040m3o2T1F2}1w2.2X0x2#3s0r1~2x0(1P1E2|0O2~3e3z1E3J0)3R3h1S3j0~0V1P0O0i0Y0e0y0g0v0B1v1x3e0S3g343Z0_0q0~0W3T3?3r3i0_0}040T3T060S483 333s0p0c0~0$0j0I0o0o3~3@3s3{040G4l403_3t0~3J0Y1+0Y0v3T4m410143453;3p4C4t0p0B3b4B4s2;4E0~0f4r4b4D4o0d4U3Y4Q4d4f0j0J0R0P4Z3^4Q4o4q4H2T4a4!364v0q4x0O4z4O4V4t4F4~4@1/4L3m524-2g434T4;044?581/4X4,4c4e044g0#0#0N5i4W0~4:2 5e3s0V4_4{4}5c4J4Q515B4P2g553x573s5a5q4t0Q0~0c0q4A5c5v4D5x044w4y5T5u5C2g0q0A0~2?5N4Q5X1Z0E0D0O0y5Z4|0v3:2 105G1/5M5c100n3V3Q3B650n3E1w0D3G6a2Z2V1}1 2X0i1*673E1C3X5f0_2N0p0y0c0i0Q5?0w0m0~1o1q1s1u0S0k4B1J3f1D0l2a0/1+0:0?0S2|0u0E2k0D0b0S1f6R4`2M0,0D0S3)0@0B0S1d0-3/0O0v0S6O051p040Y0V290r0Q2?0g1w6_6F1F3f2.3s1;1Y1!1$3O3C315B646o5w3#3%3)3+3-3/5-5(3|7q5 0~4G315~0_4$5l4h4j7t3`5s7E4u042C0Y0g0O7H5h5U5%545k4g4)4+7Q7y014/7H5X0!6;0D7O0~4Y7X4 4#7T0j5n5p7-537F4p7#0~6k0Y7H5P045R5#3=7R420~0H5K5W3#0q0p89500~0b7{7J4`7M8e5D8g8i7%0v7)5F7.598o7@6p7I7}8m8v040z7O5*045,8x7j045:5=5@4`5!5{3S7Y605|1w7h662U6m1H040U0q0B2N0S0p0Z2w6X0x6M6?0i8+1u4z1,0q0L6?1,0564781!1?1#2o8u3!042^8d5B633K5d0V001u6(290/6.5:0u746I1N1P911=7b2{7e3S7g9d857I3$7%7m3,3.8R3p5V4t4o3}8J4D5E7x967z7:4i4k9N9K7G9W5.0~7K8l9Z7r047,5$7Y7A7U4*7*7`9(978q8s9,9R7Z7+7H9.7;5o9;5t847Y5X8A9?0_80827H43888t7^7I0y8B7u048ha87I9$7Naf8y43am9`ag7$7(aj86al8ia79Qag438Ean5)5+0V8i8M5?5^4z9H3A8T4S468W9z1J3C683N620)0+0-0E04.

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".

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
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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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

.128013,f]gSa3/9moàcbPérhd_)wi;tsy(25q4e7k8 [n6=puv10l050t0H0z0g0x0V0A0L0n0V0g0A0A0P010z0x0Q010406050A0R0k0k0g0r0B040f0l0V0R0:0l0N050i0`0|0~100^0Q04191g051j0i1j1l1g0^0t0x0S0(0*0,0.0s0x0e0s0V1z0s0z0?050Z0o0V0H1u0+0-011y1A1C1A0z1I1K1G0z0o0l0t101H0r1h0z0s0(130A0Q0g0N0.0D011M1w010c0#0H0N0g0k0H1G1.1:1^1O1{1K1~200?0a0L0p0r0l0Q0l0A0x160N0L0X1,0r0r0H0n2l19230N1h0i1*2y0z1(1%1)0t250.1C0N1}2i1G1r1t0)1N2I0x2K0N1!1s1G0Q2r1h2w2y2$0_1/2m2Q1_2V0r0}0V0?0L0T2v2*0@2)242,1O2.2:2=0D2^1:2`2w2H012 0g2;040L0h332x0^362}0.393b0L0G3f352*373l2=0E3p3h3r3j380l2/3a2=0O3w2{2+1v2~3B303c0I3G3i3J3k3L3D3c0K3P3y3R3A3C3m0j3X2|3Z3t040T0U3(3I2R3!3M0T2@1a2_3x3)3;3+0T323_343{3:2-3T3b0T3e413g3H3s460?0T3o4a3q3|453#4f3v4i434d4m3,3F4p4c3z3~3O4i1i2!192O2B0t2F370n1!211h4E1k4C2(4A4J0X2#3Y3;0n0T0?030L1C0A0z0H0u0T0L0H4%4#0g4#0x4%1L0X0%2V0k0%4^1,0R1K0R0r0A3/3s0?4$4(4*3p0L4w3Z0l0?0P5a5c3;0=040M3p5i2-0?0n5n3Q5j0?5m4A5t1_0A1?043A0k015s4V1_5k0d5h5y1O0J0?0c3B5L5H2~5q5S4k1O0l0w0?2T5W445U041r4J0u4J4 0H51535x5T0.5J3w4q3z4X4Z4;4?0u0D4,4.0*5 4(2n4-1,0k2h0A1:4(0%0S0H0r6f680%5.5052544x564=58402$5b5M0.5e045g4i6x5@015k5w2(6y385V5?5X5^5v5G6O015A0?016h6j5F6N5(6P045K6D5o5N5P5R6)6K0N6M6w6*6z5!045$6.6F6:5*0x5,6n5:6p6!375_4p5{3Z5}044!574)0h630z4/664@694`4|69715;2n177h654J6b2i6e1L2f0R0e1L4-7h0`0Q0q0r0x721L0l0R0L0q0e3a1L0m0L0D0U3.4v6/6s60496=6K6A6C7(6F6H6R6#6L045r743z7.7@3Z6U5C4`6Z6J7-0?6(7,6S5O045Q0r5%557=8a3z5Z5#186{6S6}5+0l5-7N6o5=847:860x0c8d3*6;2_6?6G6Q7`3;7|017A7C7 8z6K768r376A020e0z0y7+2_6E6S0k0x0?7W7Y806S8M3`784W4Y7b7j0u0G7g7i7d6l0L7m8^7p527r0N7t4:7v6c7y0L8H7D4.4%7J2t0H208 0L7G7I7K517T7i1J5:0H6q8x047d8:8w3;7*9u5I8C8%7:6}7?9A759z8K6F8F7~7/9F6%9x6+876-8N6r8c8i7:8f6_8h9S9q8l8n5/5;9O0.8t8v9V8b9D9H8(9G348A8F968J9@8L829*018P8R0y9 9C9L7^9?2x9^5B019m0R9{a99}6%838*8A7a7c6t4)0E8=658@4}8`4}8|4|7s7i927x8 1Lad977F0R7H7J7L0L7N7P7R1K0L7U656X670YaR7i969p3}7#584o9!9v5f9 7_9E9T9:9|815la67{ab9K8D9y9N9.3z8688a48y348W9W6^6`a)5p6~708o728q8V8A9,b29Ua.3Za-9;7:8Fadaf4U9=a}b95Y0?8Q8S8Ub48Aa5a{1Obna;6S8FaUbs8A8)bC7)6^1:0tbja:aga=6Ibo37bq50bMahajbP6Fa1bAbUa@5ua?bF0.9_7N8Ib/a|0db)3g8+1_am8/0Oar4:at692C0;1K0z0%880k0q0%1/0r4#c72f4=6a93aD7n0(0s0g0F0R1L8|a!ba9s4ubw6za+a~bm5v0Cb`5)bVbt7:bHbWbJab9`cJ6$0d0bb.b=8Bb;bl8EabbLcTcZcVcXc#a|bYbIbpabbrc)5J0v9 b09Rbg7!bkc}b+b79Zd08j0?9$axc@9~4v0i4S0H2y2Zde4D1s4F2B2D2z1Z1#2B0g9m2y4E0^0i0X0Z0#0A04.
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)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
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

.128013f+x]gSa.3/9mocbPrhd_witsy*254e7k8 [n=puv10l050t0E0x0h0w0R0y0I0o0R0h0y0y0L010x0w0M010406050y0N0m0m0h0r0z040g0n0R0N0,0n0K050k0?0^0`0|0;0M04151c051f0k1f1h1c0;0t0w0O0!0$0(0*0s0w0f0s0R1v0s0x0/050V0p0R0E1q0%0)011u1w1y1w0x1E1G1C0x0p0n0t0|1D0r1d0x0s0!0 0y0M0h0K0*0B011I1s010b0X0E0K0h0m0E1C1*1,1;1K1@1G1`1|0/0a0I0q0r0n0M0n0y0w120K0I0T1(0r0r0E0o2h151 0K1d0k1$2u0x1!1Z1#0t210*1y0K1_2e1C1n1p0#1J2E0w2G0K1W1o1C0M2n1d2s2u2Y0=1+2i2M1=2R0r0_0R0/0P2r2$0:2#202(1K2*2,0/0B2:1,2=2s2D012`0h2-040j2~2t0;312^0*34360D392u2V0E2u2K2x0t2B320o1W1}1d3n1g2W2?2t3i053s0T2X2$320K0/0K1o0E0h0N0d0u0f0r0w0y3i0I3z320n0/0L3V3X3d010.040J3i060I3/3W3c1r1K0m0b0/0Q0i0B0l0l3$3=2N013Z040A403G3(3I043s0N1G0N0r3B411=3*3,162;3%3?0*0y1/04012b0N0f1}4h484p3)0/0e472@4B440c4F2%4B3^3`0i0C0H0F4K3Y0/464m2 3;4A424a4c4e4g4X3A4i1K4k4z4G424r0/010O0E0r1B4/4L423*4E4*044Z4:1=4I4T3(4N043{0P0P3h51534}554V574B4$0n4d0E4f4|324.514o4;4s011F5p015r3(4 3-3:5g320G0/0b0n4)2Y5H490/4%5p5N2;5P4H0v0/2P5k4#0/1n3s0u5S4f3U513b4!4j4D3-153D3l1e3y0k3w2v3p152y2x1V1X2x0h5z3m1o2=5|0U0W0Y04.

  1. En typographie, « espace » est un nom commun féminin