moyen
Autour de la programmation fonctionnelle
En programmation fonctionnelle, il existe des fonctions qui permettent de parcourir un itérable (liste, tuple, chaîne de caractères...) : map et filter .
Ces fonctions sont des fonctions d'ordre supérieur , c'est-à-dire qu'elles prennent une fonction en paramètre.
Fonction map
La fonction map permet d'appliquer une fonction à tous les éléments d'un itérable.
Dans l'exemple ci-dessous, on élève les éléments de nombres au carré.
def carre ( x ):
return x ** 2
nombres = [ 1 , 2 , 3 , 4 , 5 ]
resultat = map ( carre , nombres )
Attention : la fonction map renvoie un objet de type map . Dans tout cet exercice, on convertira cet objet en un objet de type list .
>>> resultat
<map object at 0x000002274B1BBF70>
>>> list ( resultat )
[1, 4, 9, 16, 25]
Fonction filter
La fonction filter permet de sélectionner certains éléments d'un itérable. Si la fonction passée en paramètre renvoie True lorsqu'on lui fournit un élément, celui-ci est sélectionné. Si elle renvoie False , il n'est pas sélectionné.
Dans l'exemple ci-dessous, on sélectionne les éléments pairs de nombres.
def est_pair ( n ):
return n % 2 == 0
>>> nombres = [ 1 , 2 , 3 , 4 , 5 , 6 ]
>>> list ( filter ( est_pair , nombres ))
[2, 4, 6]
1. Définir des fonctions
Nous allons tout d'abord définir des fonctions que l'on pourra ensuite utiliser en paramètres des fonctions map et filter .
Compléter les fonctions suivantes :
.1280133è4.ênx/R8p)0EFhCDv7c256Ag9f=buS-,_l(waPké;:ors1Kqm!ydi te+050$0*0)0N0%0K0V0(0v0K0N0V0V0D010)0%0l010406050V0F0Z0Z0N0U0#040G0T0K0F0 0T0g0(020N0Z0l0R0(0j0*190U0Y0F0*0V050i16181a1c140l041A1H051K0i1K1M1H140$0%0t0@0_0{0}0q0%0A0q0K1!0q0)12050/0E0K0*1V0`0|011Z1#1%1#0)1-1/1+0)0E0T0$1c1,0U1I0)0q0@1f0V0l0N0g0}0w011;1X010C0;0*0g1n0*1+2c2e2j1?2m1/2p0Z2r040a0(0O0U0T0l0T0V0%1i1k0-2a0U0U0*0v2M1A2t0g1I0i282Y0)2625270$2v0}1%0g2o2J1+1S1U0^1=2,0%2.0g221T1+0l2R1I2W2Y33152d1k2@2k2|0U190K120(0W2V3713362u391?3b3d3f0w3i2e3k2W2+013p0N3e040(0b3t2X143w3n0}3z3B0(0d3F3v373x3L3f0x3P3H3R3J3y0T3c3A3f0y3W3l381W3o3#3q3C0u3*3I3-3K3/3%3C0k3?3Y3^3!3$3M0B3~3m403T040W0n453,2^413:0W3h1B3j3X464e480W3s4j3u4l4d3a3`3B0W3E4r3G3+3S4w120W3O4A3Q4m4v424F3V4I4t4D4M493)4P4C3Z4o3=4V3@4n4E493}4!3 4$4S0W444*4K3.4S0w4b4I1J311A2=2#0$2)3x0v222B0,1T1I300*323j3P05520-5a4;0}0P120-0C5c4#2k0M3f5n4+3a0C121y0)0J2I2K0 5m4_5o1?11040L5s5h3y120N5K4u5G120m0S4c3x5q3C0(5Z5P3x0V0$12015*0(0p1j2T0%1j0(1w0%0(0$0Q0)0*3c2`1:2K0(0F1k2|0Z0E2R0(5x0(0V2$0%2T1t2o0)0(5A2L0%0C0(5*013W5Z5!5F5i122R0)0F0U0g3P0(4W475N6B6D4e0T12020A0)0R6G6t010Z0%124^33064Q3Z5j045l5#3Z5X6C5E5t3o5v045x0J1/1|2R0J0o6%405H5J6+5L0g120v6`4e5H5T5V6(3f6r732k5%5)5+5-0g5/5;5?5^5`5|6S2.6a5@620@1a0N2T0c67691/7t0U7v0)7x1:000o006n5*6q7a6Q6!6w6y6A4I6C6Q7004727T6H2k6J040D0D6P6,0}0V2h04010o6p4P6Y406!6$6~5Q0}6)7b6-5w6b0J2|0g830F0K7 0}6|895M045O7{3x755U4:7|016)7a8g3Z7d7/7f5.2M5=0F5@5_5{5}7p607s64661:691S0C0C0Q2R0g6h2O0n7K7=6W6r7U7+017P0.7R7*6 6F7Z6Q7$0!7)8)8X6S6U3W7@4e7_0*5D356Q7~8p476.2o0J7o0F0V0v870*8c8b8~4n71995S8j6W7!1?8n5!9b7c5(8s2i7g7i1k7k8N0t0T0%1:0_0(9395975^0F7B7D7F6i1=0Q681k2d7C0Z0c2$1:6o7M6s8X8Z6x6z8$8l0g0E710q0U9e5I8c9(123#0$9-6}8{8X7W7Y9_5L759$3x7$0+a03Z8:040b4q9}8l9 7?9i6u6#8_8c8}aa3S90850P0*0K0t2`9@9/71ap2K949-768k5W799lak8q9o6o5,8u5:9t8x6i8N2*2o9K9Q9S67621:5{1o8M0N9!1:0N9G0-6S0H0-0A0U9M300c0?77408r8V0.0(9v9x9z0N0(0t3A0*6y5^a 0(aY0la!a$680h300%0Z0Q8H1k0Xapar1k9V4P8Vae8Y6v8!9#8.8%7Xaw0%aybx8la2a4400Z6.0w0u0b0e0W4O9h0i5e594`bT0i4}1A0)4 bY2%2Z21232#0N1.bV4}1G5g8l2R0Z0J0C0Nao0J0q0b121s1u1w1y0(9g5b1N3k1H0z1|6gaLc30(9A0CaK5;5d536/anbmasbRcka|0Q3A0%0V1:aW0(2Hbbcc6g670C0K0T1|2e0)0V0e0(0s9Gb^2Lb6ceb02R300Qcv8Oa#cc0-0?8F2R0?cEcG0/8O0?9PcS9B7v1Z2.0Ice1:a/160K0/6h0T0E5{0g9G0lb46h0g000f9T8w00cxb21/b50N0l300T0v0qbi9Fcrc|c~0(a#d20$0F0e1J3k2=3x1^1$1(1*b:3x2x2o2q122D0r1j0V1f1:0O0#281j5c58b:345bbSdH3Z0A5H6L6Nd+0Rd-6*aF6Ecl0Jaoaqcod;74129^5b6QbI6U0ea9d 8Xac9h6Q0A7$bKbM0b0d0Begehei0B4ZbQd$bU2Yb.4|0.0:0=04.
Indice fonction minuscule
La fonction chr renvoie le caractère associé à une valeur Unicode.
La fonction ord renvoie la valeur Unicode associée à un caractère.
Dans le système Unicode, une majuscule et sa minuscule sont séparées de \(32\) caractères.
Indice fonction kelvin
On convertit des températures exprimées en degrés Celsius vers les degrés Kelvin en ajoutant \(273,15\) .
2. Utiliser map et filter
A partir des fonctions définies précédemment (déjà chargées en mémoire) et des fonctions map et filter , compléter les requêtes suivantes :
.128013[3è4.ênx/R8p)IL0EhC*v7c256Ag%9Nf=buS-T,_l(MwOaPék;:ors1qmyd]i te050+0:0/0U0-0P0$0.0x0P0U0$0$0H010/0-0m010406050$0J0)0)0U0#0*040K0!0P0J140!0h0.020U0)0m0Y0.0k0:1e0#0(0J0:0$050j1b1d1f1h190m041F1M051P0j1P1R1M190+0-0v0|0~10120s0-0C0s0P1)0s0/17050@0I0P0:1!0 11011(1*1,1*0/1=1@1:0/0I0!0+1h1;0#1N0/0s0|1k0$0m0U0h120y011_1$010G0_0:0h1s0:1:2h2j2o1{2r1@2u0)2w040a0.0V0#0!0m0!0$0-1n1p0=2f0#0#0:0x2R1F2y0h1N0j2d2%0/2b2a2c0+2A121,0h2t2O1:1X1Z0}1`2;0-2?0h271Y1:0m2W1N2#2%381a2i1p2|2p310#1e0P170.0%2!3c183b2z3e1{3g3i3k0y3n2j3p2#2:013u0U3j040.0c3y2$193B3s123E3G0.0e3K3A3c3C3Q3k0z3U3M3W3O3D0!3h3F3k0A3#3q3d1#3t3*3v3H0w3/3N3=3P3@3,3H0l3{3%3}3)3+3R0E433r453Y040%0q4a3;2}463^0%3m1G3o3$4b4j4d0%3x4o3z4q4i3f3 3G0%3J4w3L3:3X4B170%3T4F3V4r4A474K3!4N4y4I4R4e3.4U4H3(4t3`4!3|4s4J4e424N1O361F2`2*0+2.3C0x272G0;1Y1N350:373o3U054{0=534P3t170/1y0m0:0#0U0/0J2W1E4N0.4#450!170H3U5o4*2p16040b555w1{0)0-4K5B444j5y0N5u5p4j5r040L5H5a125E174T3a5C125K5M5Z015V044g4/5%5#5n5N2p5)4v5Y5I5x175L5/5%5)4u5S4z1{5.385v5^5D5F044M5@5T01633o656c5P5R5,665U684Z6b615!5`5$6l5(684(6p3C6e3z6g6q6v17496k6c6A2$6C3C5~4n6y3(6J3H5:1{6i606M686G6P455y0,3#4V3(0x0%17030.0p0-0$5d0.0=0{5d1t5g5i5k1D0.2N2P140v1D4h3X172W1B0?0:0O6O6f6T125P5t5|6u0h0I171,6=6W6Q170Q7r4c7n042C5d0#7v5J7t7C3f171D0/0O712Q0-0G7F626s7k6c0h5c5e6|5j5l7P6r040n0n6(7g016+6-6/6;6?6^0.6`5f5h7Y6 0:0i350-0)0W7`1p0X0:0P0v2 764$780:7a5d0O5?7f5%7i6t7T7x7p0/7!6d7E6H6D7m171e0m8o5y7u8r77042t0O8385878A7s045{647*7U047?7X6~5m6!7D7$7(4U6)457,046.0F0!0)0I2W6@6 7?0W7^8S0.311p0h0J0P1@8T4p8N8a8c7c4E8M8h5s8j8s8l2t8x8q8U3f8l7/9b048z9d3t7x7z5g9h9j545%8O7I0O8@9v8`9h8L8g7l7V6{8;7Z8I6#177%8X38068Z4s7V0i5d973C8i7S6D0$2m04010t0T0R0V0p0r0R0r0F0M0K017)5%8#6.6:6=1^7;1@215l2f0h740#14810.5E8_0$0x8`0:884c901C8d6a9B6h969W3X9f7q9H8V9q3z8N7x8v9p8o9t0h0Oa70Ja9ab9z9T898P7{9Saq5_8W9=6u9@0.8(8*8,9|0?2+6 0r6@2j0{0~0|0s0^2?8-0|1f0U2Y0d9G9M8 0479ag7c5Xaj6D9V947l990haxaM9l7o9gb67#as2$au179n7Bba8p9iay7H6=0O9}aY0O0raGamaI5d9Racbi5y9K3/0j57524:bF0j4?1F0/4^bK2,2(26282*0U1?bH4?1L596D2W0)0O0G0U830O0s0c171x1z7a0{0Z551S3p1M0o0P0.7I0.0W0C3F1y2t0/702O2PbU6@001m0_6;5g8-0{1a2+1o0C7y1o2Y0-1o0{2j1o0*2F8Tci0hck0f1Ob^040V1fb|0i5e1@0N0.a(0Gcm2R5obE8Cbn7L147ObD4|3H0$000W0x0#2Q0.3F3*cgbE3C1}1+1-1/bY3C0X7o1s0I0+0UaHae04c}bz17b=buc d1b1ak04020C0/0Yc~4j5)5+3acW58b|c4a(a`0g6?0%cP4|c.1-1 1.2x9Ca_8ba{7ddf2pb0a~anb8ap9kbbay9m0_7Ab5dM01c^040~8*c|dF5bd09hd4d88s17d7dI3(5Pdbddd!6m17di9r6u6R6Lbv7W9F75d2aO4/dk52czb@bX0r0h2r0hcJ1oc55k5h8?0!7AcK1^2i5h8{0d1@c)740xela%7/a54{1t0#0W0s2t2P1o0f0.0B2 2PcJ8|a06=0#0Jcncp0|0-0L6^0$0!aD0.eY0hc40W1B1Yc1e%6 d41V4~2{45c/dxc=1Q4;dj3acQa^31aUe0d)9Ualf38J5Abi5~btf6455=fbd-fd6893d_6I7Rfcdg68aiat5-fmfgfo5W9h6%8Y7*9@0LfCfDfEfFfGfHfCad4jaR0Beta60U8w4)aQ6,8$fIfWfXfDaP6cdV0=cVdT0S3kay0G170x1f2WdSfkd*040i9h0nd(4p0.f~d|45dV2W7Yb4d59Pf^8o5P0u0u8ofefz9s8a1b0P0@7Jawg6dGf5fu9edK8ne1bcc?4$avfQf=frdAf/2VbydTd{e 8)8+f2f?6z9J9L4p9O2pfBfYgUfGfKgSfU6.fN2X0.0Ja,8m1^2t2feAeCeEcog5a@9?gZgVg_fZgfdA5l8`gk0Oez35d=01dH6B7*5yf8dT8OgDf;gublg8e1gPh75%dVcMbhfn7Ghhhp6Uf*048Hhs3P17f0gK8}gBfl04fya@e42%512%bWe;dv1~c;34e{544/e~gg04hAa?gq6Ugphkd`17hagM3(fae19Ah%6cgegGfth:6D5)fjhD6DgH5}fpffh^6Xfwe1hGgQfAg^g`g_gX1{fMfObgic12gTiagUf!6Df$0:f(h+45hu5obieabm7J2i0-hoirarhgg=iCaNf{3#f g04jg20?5kiFi2aIiQ6K7*5P0Dh4h=h!7h5s7jhx6E5*im8Bg~gj5iaBgzgnh#04i%i!3Daogth?bkivdPgj9ohfivix7K0^iBh|gN8Kh48OhYgLj98J7%i+6*i9ikfYih7+gZeIfOg(1^g*b|3d8)35g/0heFiT4O6DijjmfWjjc i-h0h2j8iU95i@h4h9hgf_i=12hm3*jc17jVi(0!huhwi_jdgJhZiRg1177Nj!cRiyj7gAbdhWj$iG7Q7$i64x1Fe~1S4;bI4 19bI0?0^0`04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)