Comments on: FIRST ! http://sametmax.com/first/ Du code, du cul Fri, 06 Sep 2019 09:34:15 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: glickind http://sametmax.com/first/#comment-12306 Sat, 03 Aug 2013 06:50:08 +0000 http://sametmax.com/?p=6991#comment-12306 corrections:
s/La première retourne le premier élément, et, si c’est l’itérable est vide, il retourne une valeur par défaut/La première retourne le premier élément, et, si l’itérable est vide, elle retourne une valeur par défaut/

]]>
By: Sam http://sametmax.com/first/#comment-12304 Sat, 03 Aug 2013 05:06:56 +0000 http://sametmax.com/?p=6991#comment-12304 Un indexable peut avoir un élément et pas de longeur : c’est le cas de tout objet custo qui définie un index mais pas de methode __len__.

Mais je crois que le plus gros problème dans ton code, c’est qu’il ne gère pas tous les itérables : il ne gère que les itérables qui ont __len__. Donc il ne gère aucun stream (IOstream, ByteStream, File like objects) et il ne gère aucun objet dont la taille ne peut être définie à l’avance (expression génératrices, générateurs crées avec yield).

Dans le monde de Python, où tout est itérable, et où tout fonctionne par duck typing, ce sont de grosses lacunes.

]]>
By: Fred http://sametmax.com/first/#comment-12257 Fri, 02 Aug 2013 20:08:28 +0000 http://sametmax.com/?p=6991#comment-12257 Concernant le x[0] qui plante si l’itérable est vide je contredis violemment. Si l’itérable est vide, alors len(x) vaut 0 et dans ce cas c’est “autre chose” (par exemple ‘flammkuchen’) qui ressort.
Effectivement la fonction marche pour un dico (et pas mon instruction) mais effectivement sortir le premier élément d’un “non ordonné” est un peu abscons.

Sinon pour sortir le premier élément vrai

first=[x for x in a if fct(x)][0] if len(a) else "flammkuchen"

;)
Bon je chipote et j’en suis désolé. En plus s’il n’y a pas d’élément vrai ça renverra une exception mais sincèrement je ne vois pas l’utilité de ces fonctions. C’est vrai que être atomique c’est bien mais attention à la démesure (le “trop” est l’ennemi du bien). S’il commence à y avoir trop de fonctions de ce genre, le code “simple et élégant” rebascule dans un code “fouillis” (ah zut, à quoi sert déjà la fonction first_true” ? et “second_false” ? et “third_any_else” ? etc etc etc…)

]]>
By: Sam http://sametmax.com/first/#comment-12248 Fri, 02 Aug 2013 18:20:48 +0000 http://sametmax.com/?p=6991#comment-12248 x[0] va planter si l’indexable est vide. De plus, tu ne peux pas faire le “autre chose” facilement sur une ligne à par avec un iter(x).next() qui va lever stopiteration si l’itérable est vide. Et il faudra encore du code pour gérer la valeur par défaut.

Ton cas ne gère pas non plus les hashable (dicos, counter), puisqu’ils ont une taille, mais pas d’ordre, et donc pas d’élément 0. Même si le cas est plus rare car on récupère pas souvent le premier élément d’un non ordonné, on perd donc en prime le duck typing dans le cas de traitement de séquences hétérogènes.

Enfin ceci ne gère pas le cas de si on veut le premier élément vrai.

Ce genre de fonction n’est pas indispensable, mais l’utilisation de nombreuses fonctions de ce genre amène à un code simple et élégant.

]]>
By: Fred http://sametmax.com/first/#comment-12244 Fri, 02 Aug 2013 18:01:51 +0000 http://sametmax.com/?p=6991#comment-12244 Mouais. Pas convaincu de l’utilité profonde de ces fonctions.

first=x[0] if len(x) else "autre chose"

marche aussi bien…

Mais c’est bien de faire ce genre d’article. Mieux vaut un article inutile de temps en temps que ne rien faire et laisser passer les trucs fabuleux que j’ai lu ici :)

]]>
By: desfrenes http://sametmax.com/first/#comment-12107 Fri, 02 Aug 2013 07:46:20 +0000 http://sametmax.com/?p=6991#comment-12107 “on pourrait sans problème fusionner les deux ”

Bof, trop d’arguments tue la fonction :-P

]]>
By: Kyoku57 http://sametmax.com/first/#comment-12100 Fri, 02 Aug 2013 05:37:41 +0000 http://sametmax.com/?p=6991#comment-12100 Ah flute, j’avais lu FIST … du coup, je suis déçu ^^

]]>
By: Lyyn http://sametmax.com/first/#comment-12093 Fri, 02 Aug 2013 00:21:14 +0000 http://sametmax.com/?p=6991#comment-12093 Oui, fallait qu’un débile le fasse. Pour en revenir à l’article, j’trouve ça cool ! Je testerai sans aucun doute d’ici peu :3

]]>
By: Lyyn http://sametmax.com/first/#comment-12092 Fri, 02 Aug 2013 00:20:17 +0000 http://sametmax.com/?p=6991#comment-12092 Hmm.. FIRST !

(désolé :x)

]]>