Tableau avec des éléments tous différents (optimisé)

Version optimisée

Cet exercice propose une version optimisée de celui-ci.

En effet, les tableaux considérés contiennent ici un grand nombre d'éléments.

Un tableau peut contenir plusieurs fois le même élément. C'est le cas du tableau tableau_1 ci-dessous :

tableau_1 = [1, 2, 3, 6, 2, 4, 5]
La valeur 2 est deux fois dans ce tableau.

Au contraire, dans le tableau tableau_2, toutes les valeurs sont uniques :

tableau_2 = ['chien', 'chat', 'lion', 'poisson']

Écrire une fonction tous_differents qui prend un tableau tableau et renvoie un booléen indiquant si toutes les valeurs de tableau sont différentes ou non.

Grands tableaux

Les tableaux utilisés dans les tests peuvent contenir un grand nombre d'éléments.

Une approche comparant chaque élément à tous les autres prendra bien trop de temps à s'exécuter...

Exemples
>>> tableau_1 = [1, 2, 3, 6, 2, 4, 5]
>>> tous_differents(tableau_1)
False
>>> tableau_2 = ['chien', 'chat', 'lion', 'poisson']
>>> tous_differents(tableau_2)
True
###(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
.128013o13bpa[7gcu h)6P58/n4]_yerfmit=SwTlFd(k2v:s050L0z0E0g0D0J0R0m0k0J0g0R0R0F010E0D0f010406050R0l0C0C0g0A0y040G0b0J0l0,0b0u050t0?0^0`0|0;0f04051c151f0t1c0;0L0D0P0!0$0(0*0n0D0j0n0J1t0n0E0/050V0e0J0z1o0%0)011s1u1w1u0E1C1E1A0E0A1d0E0n0!0 0R0f0g0u0*0O011G1q010B0X0z0u0g0C0z1A1Z1#1*1I1-1E1:1=0/0a0m0q0A0b0f0b0R0D120u0m0T1X0A0A0z0k2a151^0u1d0t1V2n1S1U1T1B0L1`0*1w0u1/271A1l1n0#1H2x0D2z0u0b2D1A0f2g1d2l2n2R0=1!2b2F1+2K0A0_0J0/0c2k2V0:2U1_2X1I2Z2#0/0O2)1#2+2l2w012:0g2$040d2@2m0;2`2.0*2}2 0v322_2V2{380/0r3b343d362|0b2!2~0/0p3i2,2W1p2/3n2;040i3s353v373x3p040s3b1g2P152D2q0L1U2v3l0k2L1?1d3N1e3L2T162*053T0T2Q3k3D010N0/0T0B3J3C2G010H0/0m3=3+3@0u0B0/0E0b0l0R0x1l0B0B0z2g0u0E0R3|2-3,0.040M4f3u3~410g1D0z0g0l4l2{4i0o0Q3i0m4A3{3?2Y0/0P443b4C3}1+0b0/0F4I3t3e0e3/0D2i4u3l4i0M0o4z4B4Q3l3.040B3n4P4D2/0/0z1E1=4c4-4K1I0b3_042I4^4g4n041P4r4t3#2^4%4h0/4y56334B5e4J501+4)0D3;5c045g4m4E044;0z4?0E4 5p4`4|4~5m5o3e4F4H5m583@4i5b2R065f5N5C4(0/2g0E0l0A145B5H5i0k0/0K2~0R0z4#5N5Y1I4)4;5(4W59045K2*5M5O5e5,375E4e5G4.0*4i0h5;515s5u651+4i0w5w2{4M044O5X613-5!040I0A0l5)5m5_4A5|3-5R0U5U5W2R5P3,0N6l6n6p3s0t3(0z2n2O6K3M1m3O2q2t2o4p1E2n3N0;0t0T0V0X0R04.