La programmation Python peut s'avérer relativement frustrante pour les débutants, lorsqu'ils découvrent avec bonheur les fonctions map(), zip(), reduce() etc..: ils commencent à en user et abuser dans leurs programmes.
Puis vient la phase de la dépression profonde, lorsqu'ils découvrent que toutes ces primitives sont vouées à disparaître...
Mais pourquoi diable continuent-elles à être documentées, sans même signaler leur disparition future dans le manuel de référence de la version 2.4 !!!
http://www.python.org/doc/2.4/tut/node7.html
tout simplement parce que cet écran d'aide est à peu de choses prêt un copier-coller de la 2.3, 2.2, :'(
En attendant, militons pour itertools !
http://programmation-python.org/sections/blog/2006_01_15_le-(...)
# map, zip, reduce
Posté par 태 (site web personnel) . Évalué à 3.
Pour map, je serais contre son retrait, même si je l'utilise de moins en moins au profit de la version "algébrique" : [ f(x) for x in l] fait la même chose que map(f, l) et me "parle" plus.
Quant à reduce, je l'aime beaucoup et je ne saurais pas m'en passer.
Et "on" voudrait remplacer ça par des itérateurs ? Je vais retourner à ocaml si python ne veut plus être à mon goût...
[^] # Re: map, zip, reduce
Posté par Tarek Ziadé . Évalué à 4.
>>> a = ['t', 't']
>>> b = ['o', 'o']
>>> zip(a, b)
[('t', 'o'), ('t', 'o')]
Sinon, plus d'infos de GvR himself sur le sujet (et surtout sur reduce()):
http://www.artima.com/weblogs/viewpost.jsp?thread=98196
[^] # Re: map, zip, reduce
Posté par Olivier Grisel (site web personnel) . Évalué à 7.
A propos des iterateurs, les expressions génératrices sont une manières très élégante de faire de la programmation fonctionnelle en python :
(f(x) for x in l) est équivalent à [f(x) for x in l] mais retourne un générateur (avec évalutation retardée) ce qui évite de construire toute une liste chargée en mémoire même si seul les premiers éléments ne sont utilisés. imap fait l'opération correspondante pour la fonction map.
Donc contrairement à toi je trouve que python évolue dans la bonne direction : on peut faire de la programmation (pseudo-)fonctionnelle efficace en python.
Et pour ceux qui aiment OCaml et ses functors (et les autres aussi :), on peut retrouver ce type de feelings en python avec la Zope Component Architecture :
http://griddlenoise.blogspot.com/2005/12/zope-component-arch(...)
Il n'y a pas besoin de tout Zope3, seuls les deux modules zope.interface et zope.component sont à ajouter dans son python path. Ca fait du code modulaire et vraiment réutilisable :)
[^] # Re: map, zip, reduce
Posté par mickabouille . Évalué à 4.
En tant qu'individu complètement déformé par les maths, je suis contre la suppression de map et lambda!
PS : ma construction préférée en python est le map(lambda...)
# imap?
Posté par Staz . Évalué à 1.
-->[]
# Espoir quand tu nous tiens
Posté par golum . Évalué à 2.
Pourquoi elle sont dépréciées ?
Tout simplement parce qu'elles font doublons avec les listes en compréhensions
http://www.python.org/doc/2.4/tut/node7.html#SECTION00714000(...)
en attendant pour les inconditionnels de la programmation fonctionnelle
http://www-128.ibm.com/developerworks/linux/library/l-prog.h(...)
http://www-128.ibm.com/developerworks/linux/library/l-prog2.(...)
http://www-128.ibm.com/developerworks/linux/library/l-cpyite(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.