On parle de compréhension de liste, mais on peut faire des tuples, pas de dictionnaire (il me semble).
On parle de compréhension de liste, mais on peut faire des tuples, pas de dictionnaire (il me semble).
OK merci
Ou plutôt :
Et que penses-tu du code suivant ? Si ça c'est pas ultra puissant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nums = map(lambda x: x*2, range(1,5))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 from functools import * def list_mod(n): return partial(filter, lambda x: x % n == 0) f = list_mod(2) print f(range(100)) f = list_mod(3) print f(range(100))Amusez-vous à faire aussi court, simple et lisible sans utiliser de programmation fonctionnelle (filter & partial) !Envoyé par Matthieu Brucher
Ben zut alors, avec les listes on peut pas ! C'est bête !
Et un joli dico des caractères ASCII ! Un !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 from pprint import * l = range(32, 127) d = dict(zip(map(chr, l), map(lambda i: "0x%02x" % i, l))) pprint(d)
Avant de poster un message .
Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .
Ton exemple doit passer par zip pour fonctionner. Avec les compréhensions de list, on fait la même chose sans le zip.
La question était de savoir si on peut passer directement par un dictionnaire, la réponse est "non" avec les deux solutions.
Quant à ton premier problème, il utilise des fonctions supplémentaires, je peux très bien faire de même (et encore, sans fonction supplémentaire...)
Essaie juste de ne pas être autant acide dans tes réponses.
Sans partial et sans filter:
Comment ça avec les listes, on peut pas?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 def list_mod(n): return lambda x: [e for e in x if e % n == 0] f = list_mod(2) print f(range(100)) f = list_mod(3) print f(range(100))
et je trouve cette version plus lisible!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 from pprint import pprint liste = range(32, 127) d = dict( [(chr(n), "0x%02x" % n) for n in liste] ) pprint(d)
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
J'allais sortir le premier exemple, j'y avais pensé en allant au boulot
Plusieurs intérêts à cette méthode :
- plus court
- pas d'importation sauvage
et auun inconvénient supplémentaire
Perso je suis plus dev .net que python et j ai eu l'agreable surprise de voir que le nouveau C# 3 s'etait pas mal inspiré de python et a ajouter des fonction "lambda", quel agréable surprise ...
et la maintenant je vois que dans python 3 il vont retirer lambda ...
Je ne comprend pas vraiment c pourtant hyper pratique et élégant ...
Ca ne sera pas enlevé, il me semble. En revanche, ce n'est pas non plus super super utile, ça dépend des cas.
Tu as un peu triché, tu as utilisé "lambda" et "dict()".Envoyé par Thierry Chappuis
Ce ne sont donc pas une solution purement à base de comprehension list.
Bon d'accord, je cherche la petite bête.
Avant de poster un message .
Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .
Oui, tu peux sortir, ta version utilise dict et zip
Code : Sélectionner tout - Visualiser dans une fenêtre à part d = dict(zip(map(chr, l), map(lambda i: "0x%02x" % i, l)))
Où ais-je triché? Tu avais avancé qu'il n'était pas possible d'écrire un code aussi concis que le tiens sans utiliser partial() ni filter(). Je n'ai utilisé aucune de ces deux fonctions.
En ce qui concerne dict(), je ne vois pas comment tu veux construire un dictionnaire à partir de listes en te passant de cette fonction. Mais bon, l'utilisation de cette fonction n'a rien à voir avec le débat map/filter vs compréhensions de listes.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Ok ok, tout ça est super intéressant.
Bon j'ai encore pas mal de boulot je pense avant d'arriver à tout piger, à tout utiliser et à avoir votre niveau, mais c'est pas grave.
Merci pour tous ces renseignements.
Initiation à Qt Quick et QML : Partie 1 - Partie 2
En cas de besoin, pensez à la
Mon site et mes tutoriaux sur Developpez.com
Pas de question technique par MP... Les forums sont là pour ça
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Je viens de faire des recherche ... en fait ça fait des années que guido voulait enlever lambda mais pour ne pas casser la compatibilité il ne l'a pas fait sur la branche 2.x mais il disait qu'il allait le faire sur la 3.x
Finalement il y a un peu moins d un an il a dit qu'il le garderait car il n'a pas trouver d'alternative au moins aussi efficace bien qu'il n'aime pas trop le systeme.
bon bin c cool
Pour en savoir plus sur ce débat: http://www.artima.com/weblogs/viewpost.jsp?thread=98196. lambda, filter et map feront finalement bien partie de Python 3.0. Seule la fonction reduce() sera écartée.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Je ne connaissais pas la fonction lambda. Je viens de lire un sujet posté par GuiGui sur la FAQ et je commence à comprendre l'utilité de celle-ci, notamment la possibilité de modifier facilement la valeur d'un Label par divers Button (l'exemple quoi...).
Par contre y a-t-il une utilisation de lambda qui pourrai permettre d'associer plusieurs fonctions à un seul Button.
Aujourd'hui, la seule façon que j'ai trouvé c'est d'appeler une fonction qui appelle toute les autres.
Initiation à Qt Quick et QML : Partie 1 - Partie 2
En cas de besoin, pensez à la
Mon site et mes tutoriaux sur Developpez.com
Pas de question technique par MP... Les forums sont là pour ça
Le pricnipa de l'instruction lambda, c'est de créer une fonction rapidement qui ne fait qu'une seule chose.
C'est la même chose que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part f = lambda x: [e for e in x if e % n == 0]
Rien de plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 def f(x): return [e for e in x if e % n == 0]
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Arf :
NB : je vais changer de profession, je vais me lancer dans la pub.Envoyé par Anonyme
Avant de poster un message .
Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager