Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
3064 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [python]Pair et impair

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[python]Pair et impair

n°1520789
Near84
Posté le 27-02-2007 à 11:21:23  profilanswer
 

voilà, j'ai un code python qui est censé retourner les chiffres pairs et impairs mais il marche pas

 

voici la bete :

 
Code :
  1. #on definit les variables
  2. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  3. longueurSuite = len(suite)
  4. x = 0
  5. #on remplit les tableaux pair et impair
  6. while x < longueurSuite:
  7.     if (suite[x] % 2) == 0:
  8.         pair = pair[x] + suite[x]
  9.     else:
  10.         impair = impair[x] + suite[x]
  11.     x += 1
  12. #on affiche
  13. #pair
  14. pairLongueur = len(pair)
  15. y = 0
  16. while y < pairLongueur:
  17.     print pair[y]
  18.     y += 1
  19. #impair
  20. impairLongueur = len(impair)
  21. y = 0
  22. while y < impairLongueur:
  23.     print impair[y]
  24.     y += 1
  25. raw_input()
 

merci, ++


Message édité par Near84 le 27-02-2007 à 11:52:15
mood
Publicité
Posté le 27-02-2007 à 11:21:23  profilanswer
 

n°1520810
elpacifica​tor
Posté le 27-02-2007 à 11:38:25  profilanswer
 

Je crois que tu n'as pas compris l'utilisation des listes, elle possede des methodes pour se simplifier la vie, il n'est pas necessaire de rechercher la taille de la liste puis de faire une boucle while, economise tes variables. Il est plus simple de faire:

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. paire, impaire = [], []
  3. for nombre in suite:
  4.     if nombre%2:
  5.         impaire.append(nombre)
  6.     else:
  7.         paire.append(nombre)
  8. print "nombres impaires: %s" % ", ".join([str(nb) for nb in impaire])
  9. print "nombres paires: %s" % ", ".join([str(nb) for nb in paire])

ou

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. paire  = [nb for nb in suite if not nb%2]
  3. impaire  = [nb for nb in suite if not nb in paire]


Message édité par elpacificator le 27-02-2007 à 11:49:03
n°1520830
Near84
Posté le 27-02-2007 à 11:51:26  profilanswer
 

elpacificator -> j'ai compris que la moitié ^^ ( même pas )  
 
comme j'ai commencé hier soir, ben je sais pas trop comment marche ton code :-°
 
merci, ++

n°1520859
elpacifica​tor
Posté le 27-02-2007 à 12:06:53  profilanswer
 

Code :
  1. # creation de la liste suite
  2. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  3. #creation de deux listes vides
  4. paire, impaire = [], []
  5. # pour chaque element de la liste suite
  6. for nombre in suite:
  7.     # si le reste de la division est non nul
  8.     if nombre%2:
  9.         # ajout a la liste impaire
  10.         impaire.append(nombre)
  11.     # sinon
  12.     else:
  13.         # ajout a la liste paire
  14.         paire.append(nombre)

ca ca devrait aller
Un des mecanismes puissant de python: la list comprehension, elle permet de generer une liste à partir d'une autre liste en appliquant un traitement sur chaque element et en filtrant certain d'entre eux.
 
Je ne saurais trop te conseiller de lire un tutoriel sur python, ca ne sert à rien de poser des questions si tu n'as pas le minimum pour comprendre les reponses....

n°1520894
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-02-2007 à 12:22:55  profilanswer
 

la version avec les list comprension  

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair = [n for n in suite if n%2 == 0]
  3. impair = [n for n in suite if n not in pair]


python c'est du bonheur en 3 lignes
 
edit: grillé par le pacificateur


Message édité par Harkonnen le 27-02-2007 à 12:25:48
n°1520896
Near84
Posté le 27-02-2007 à 12:25:44  profilanswer
 

Harkonnen -> rien compris xD
Elpacificator -> ca va mieux, mais j'ai pas encore vu les boucles for, tu pourrais me donner un peu d'explications ?

 

thx, ++


Message édité par Near84 le 27-02-2007 à 12:44:03
n°1520946
zapan666
Tout est relatif
Posté le 27-02-2007 à 13:38:25  profilanswer
 

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair = [n for n in suite if n&1 == 0]
  3. impair = [n for n in suite if n not in pair]


splus la classe

Message cité 1 fois
Message édité par zapan666 le 27-02-2007 à 13:38:59

---------------
my flick r - Just Tab it !
n°1520951
elpacifica​tor
Posté le 27-02-2007 à 13:46:22  profilanswer
 

zapan666 a écrit :

Code :
  1. n&1 == 0


splus la classe


 
comparer une expression avec 0, c'est bof la classe AMHA.  ;)  

n°1520986
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 27-02-2007 à 14:30:32  profilanswer
 

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair, impair = [n for n in suite if n%2 == 0],[n for n in suite if n not in pair]


champion du monde [:yaisse2]
 
edit: ah ben non, ça marche pas ! normal, pair n'existe pas au moment de la création de impair


Message édité par Harkonnen le 27-02-2007 à 14:32:03
n°1521915
0x90
Posté le 28-02-2007 à 18:37:28  profilanswer
 

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair, impair = reduce(lambda b,n:b[n%2].append(n) or b, suite, ([],[]))


Message édité par 0x90 le 28-02-2007 à 18:37:35

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
mood
Publicité
Posté le 28-02-2007 à 18:37:28  profilanswer
 

n°1521921
masklinn
í dag viðrar vel til loftárása
Posté le 28-02-2007 à 18:48:40  profilanswer
 

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. def partition(fun, arr):
  3.    return filter(fun, arr), filter(lambda v: not(fun(v)), arr)
  4.  
  5. impair, pair = partition(lambda v: v%2, suite)
  6. # ou bien
  7. impair, pair = partition(lambda v: v&1, suite)


Higher Order Functions FTW :o

 

À noter par contre que le manque d'opérateur de composition de fonction en Python force à créer une lambda intermédiaire un peu crade à partition, en Haskell c'est beaucoup plus clean puisque partition est défini comme:

partition p xs == (filter p xs, filter (not . p) xs)
-- puis
impair, pair = partition ((== 1) . (`mod` 2)) suite
-- Haskell est très fortement et très strictement typé: donner un int à une fonction demandant un booléen ne compile pas :o

 

À noter également que ma solution est super générique puisqu'elle permet par exemple de partitionner des mots selon que leur longueur est paire ou impaire, ou des objets selon leur taille en mémoire, ou n'importe quoi d'autre, juste en changeant la lambda :o

 

En plus ça permet d'utiliser facilement les prédicats Python existants :o


Message édité par masklinn le 28-02-2007 à 18:58:36

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°1521927
0x90
Posté le 28-02-2007 à 19:07:19  profilanswer
 

En version générique, je préfère

Code :
  1. def partition(fun, arr):
  2.     return reduce(lambda b, n:b[bool(fun(n))].append(n) or b, arr, ([],[]))


ça évite la double évaluation de fun et ne parcours arr qu'une seule fois.


Message édité par 0x90 le 28-02-2007 à 19:07:33

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1521933
masklinn
í dag viðrar vel til loftárása
Posté le 28-02-2007 à 19:18:18  profilanswer
 

Ouais mais c'est franchement imbitable.

 

Et l'utilisation de la sortie de `bool` comme un entier est franchement discutable...


Message édité par masklinn le 28-02-2007 à 19:21:03

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°1521934
0x90
Posté le 28-02-2007 à 19:30:07  profilanswer
 

La classe bool étant une sous classe de int en python, c'est pas franchement laid je trouve [:spamafote]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1521939
masklinn
í dag viðrar vel til loftárása
Posté le 28-02-2007 à 19:37:46  profilanswer
 

0x90 a écrit :

La classe bool étant une sous classe de int en python, c'est pas franchement laid je trouve [:spamafote]


Ben si, sémantiquement c'est très moche, un booléen s't'un booléen pas un entier, quelle que soit l'implémentation [:spamafote]

 

Et ça ne rend pas ton code plus compréhensible :o

 

Non parce que je rappelle quand même:

$ python -m this | grep -i "beautiful\|readability\|simple"
Beautiful is better than ugly.
Simple is better than complex.
Readability counts.


Et là paf, steak haché :o

Message cité 1 fois
Message édité par masklinn le 28-02-2007 à 19:41:04

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°1521979
0x90
Posté le 28-02-2007 à 21:50:04  profilanswer
 

masklinn a écrit :

Ben si, sémantiquement c'est très moche, un booléen s't'un booléen pas un entier, quelle que soit l'implémentation [:spamafote]


C'est pas une histoire d'implémentation, un booléen est un entier et python le dit c'est tout donc en python c'est vrai [:spamafote]
'fin si ça te chagrine c'est de toute façon facile à 'corriger' (y'a plein de manières de le faire d'ailleurs) sans changer le principe du remplissage de listes avec reduce.

masklinn a écrit :


Et ça ne rend pas ton code plus compréhensible :o

 

Non parce que je rappelle quand même:

$ python -m this | grep -i "beautiful\|readability\|simple"
Beautiful is better than ugly.
Simple is better than complex.
Readability counts.


Et là paf, steak haché :o


La lisibilité et l'esthétisme sont relativement subjectifs et ne se compte pas nécessairement en quantité de ponctuation :o
Conceptuellement mon code reflète mieux la logique d'une partition, je fait 2 listes vides et j'envoie chaque élément de la liste soit à 'droite', soit à 'gauche'.
Le tient ne met pas aussi bien (à mon goût du moins, là aussi c'est subjectif) en évidence le contrat selon lequel les 2 listes retournées contiennent les mêmes éléments que la liste en entrée.

 

D'ailleurs ton truc se comportera d'une manière assez inattendue avec la fonction suivante :

Code :
  1. def fun(val):
  2.   return random.choice((True,False))


(Oui la fonction n'est pas pure, etc... mais c'est une manière possible de décider d'une partition, voire un implémentation relativement logique pour partitionner aléatoirement un ensemble)


Message édité par 0x90 le 28-02-2007 à 21:50:22

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1528189
gatsu35
Posté le 14-03-2007 à 09:13:49  profilanswer
 

Laisse, c'est du masklinn coding, une façon de codage que seul masklinn comprend :o

n°1528235
masklinn
í dag viðrar vel til loftárása
Posté le 14-03-2007 à 10:28:24  profilanswer
 

Nan fondamentalement il a parfaitement raison sur le random(), c'est juste que c'est complètement con comme idée, et que ma structure présuppose que le prédicat est idempotent (ou référentiellement transparent, comme tu préfères) :o


Message édité par masklinn le 14-03-2007 à 10:29:21

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°1528567
scheme
Posté le 14-03-2007 à 17:58:28  profilanswer
 

je ne comprends absolument rien a tous vos termes techniques, mais ça m'interesse grandement^^

n°1538417
xiluoc
un pc pour les unirs ....
Posté le 04-04-2007 à 14:52:56  profilanswer
 

Je ne connaissais pas la methode de 0x90, jadore python.

n°1538466
elpacifica​tor
Posté le 04-04-2007 à 16:07:26  profilanswer
 

Desolé pour les pythonistes de la preimère heure, mais va bientôt falloir se passer des lambda, des reduce et des map dans un proche avenir.
Même GVR trouve qu'il faut les supprimer au profit des list comprehension qui sont plus lisibles.
 
Ca va être dur pour certain, je pense ...

n°1538476
masklinn
í dag viðrar vel til loftárása
Posté le 04-04-2007 à 16:18:21  profilanswer
 

elpacificator a écrit :

Desolé pour les pythonistes de la preimère heure, mais va bientôt falloir se passer des lambda, des reduce et des map dans un proche avenir.
Même GVR trouve qu'il faut les supprimer au profit des list comprehension qui sont plus lisibles.


Désolé pour toi, mais il va bientôt falloir que tu te mettes à jour: les lambdas ne bougent pas (*), map ne bouge pas non plus, idem pour filter (les deux derniers pouvant par contre être déplacés dans un namespace à part plutôt que d'être dans le global, je ne crois pas qu'une décision finale ait été faite sur le sujet), seul reduce saute.

 

*: Et le seule moyen pour qu'elles soient retirées auraient été une meilleure syntaxe pour les fonctions anonymes, ce à quoi la communauté python n'est pas parvenue, en tout cas elle n'est pas parvenue à quelque chose plaisant à GvR


Message édité par masklinn le 04-04-2007 à 16:21:35

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°1538488
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-04-2007 à 16:37:49  profilanswer
 

tiens, petite question au passage : c'est quoi la différence entre un Set et une list ? dans quel cas utiliser l'un ou l'autre ?

n°1538503
masklinn
í dag viðrar vel til loftárása
Posté le 04-04-2007 à 17:14:27  profilanswer
 

Harkonnen a écrit :

tiens, petite question au passage : c'est quoi la différence entre un Set et une list ? dans quel cas utiliser l'un ou l'autre ?


Le set est une collection non-ordonnée de valeurs non redondantes:

  • Un set n'a pas d'ordre, alors qu'une list a un ordre (donc on ne peut pas trier un set, ...)
  • Il n'est pas possible d'avoir deux fois "le même" objet dans un set (donc deux objets strictement égaux via __eq__), ça ne pose aucun problème dans une list (e.g. set([1,1,1]) est impossible alors que [1,1,1] n'est pas un problème)
  • Les sets ont tout un jeu de méthodes pour la gestion d'intersections, différences, unions de sets que les listes n'ont pas
  • Les sets sont également beaucoup plus rapide pour des tests d'appartenance (foo in my_set vs foo in my_list)


En fait, tu peux considérer qu'un set est un dictionary dont tu n'utilises que les clés (c'est comme ça qu'il était implémenté dans Python 2.3 si je me souviens bien)

 

Pour leurs utilisations, les sets sont plutôt à utiliser pour créer des ensembles (n'ayant pas d'ordre, pas de redondances, et très utilisés pour le test de contenance). Pour plus d'infos, "3.7 Set Types" dans la doc Python


Message édité par masklinn le 04-04-2007 à 17:17:15

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°2275747
yertle75
Posté le 16-02-2016 à 10:29:40  profilanswer
 

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair = [n for n in suite if n&1 == 0]
  3. impair = [n for n in suite if n not in pair]


 
Je viens de tomber sur ce thread, et en tant que nouveau pythoniste venant de languages plus bas niveau (C, java...) je suis étonné par les compréhensions de liste et notamment celle de impair, en particulier j'ai l'impression que pour tout element de suite, on fait une boucle sur TOUT les elements de pairs pour savoir si il est dedans et si il ne l'est pas on le met dans impair.
 
Je suppose que python implémente ca d'une meilleure manière mais ca suppose qu'il ait compris que la liste soit ordonnées, non redondante, etc... Vu que tout le monde adore les compréhensions de liste je suppose que c'est le cas et que python est TRES intelligent mais si qqu'un pouvait detailler un peu le fonctionnement d'une compréhension de liste j'aimerais bien ^^ et pas juste de savoir que ca marche de manière miraculeuse (oui oui, je sais les programmeurs venant du C sont chiant a tout vouloir comprendre ;))

n°2275751
gilou
Modérateur
Modzilla
Posté le 16-02-2016 à 12:17:43  profilanswer
 

yertle75 a écrit :

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair = [n for n in suite if n&1 == 0]
  3. impair = [n for n in suite if n not in pair]


 
Je viens de tomber sur ce thread, et en tant que nouveau pythoniste venant de languages plus bas niveau (C, java...) je suis étonné par les compréhensions de liste et notamment celle de impair, en particulier j'ai l'impression que pour tout element de suite, on fait une boucle sur TOUT les elements de pairs pour savoir si il est dedans et si il ne l'est pas on le met dans impair.
 
Je suppose que python implémente ca d'une meilleure manière mais ca suppose qu'il ait compris que la liste soit ordonnées, non redondante, etc... Vu que tout le monde adore les compréhensions de liste je suppose que c'est le cas et que python est TRES intelligent mais si qqu'un pouvait detailler un peu le fonctionnement d'une compréhension de liste j'aimerais bien ^^ et pas juste de savoir que ca marche de manière miraculeuse (oui oui, je sais les programmeurs venant du C sont chiant a tout vouloir comprendre ;))


1) C'est aussi ce qui m'a sauté aux yeux à la lecture. Je suppose que c'est fait pour des raisons pédagogiques, et qu'une implémentation efficace serait

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair = [n for n in suite if n&1 == 0]
  3. impair = [n for n in suite if n&1 != 0]


 
2) une compréhension de liste, c'est un nom bien pompeux pour ce qui n'est qu'un grep de liste (ou une  combinaison d'un grep et d'un map)
Le code équivalent en perl aurait été

Code :
  1. @suite  = (21, 45, 68, 91, 165, 16, 12, 2, 5);
  2. @impair = grep {$_&1} @suite;
  3. @pair   = grep {not ($_&1)} @suite;


 
Bon sinon, j'ai un one liner perl pour construire et remplir les listes, je laisse le soin aux spécialistes de python (ce n'est pas mon cas) de le transposer en ce langage.

Code :
  1. @suite = (21, 45, 68, 91, 165, 16, 12, 2, 5);
  2. # construit et remplit les listes @pair et @impair
  3. map {push @{('pair', 'impair')[$_&1]}, $_} @suite;


L'idée sous-jacente est que si j'ai une liste @suite, et une fonction f des valeurs de la liste dans les nombres naturels, on peut partitionner la liste en fonction des valeurs de f en faisant map {push $partition[f($_)], $_} @suite;  
Plus un peu de cuisine dans ce cas précis, pour aller sur @pair et @impair plutôt que sur $partition[0] et $partition[1].
 
A+,


Message édité par gilou le 16-02-2016 à 13:16:58

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2275763
masklinn
í dag viðrar vel til loftárása
Posté le 16-02-2016 à 14:13:38  profilanswer
 

yertle75 a écrit :

Code :
  1. suite = [21, 45, 68, 91, 165, 16, 12, 2, 5]
  2. pair = [n for n in suite if n&1 == 0]
  3. impair = [n for n in suite if n not in pair]
 

Je viens de tomber sur ce thread, et en tant que nouveau pythoniste venant de languages plus bas niveau (C, java...) je suis étonné par les compréhensions de liste et notamment celle de impair, en particulier j'ai l'impression que pour tout element de suite, on fait une boucle sur TOUT les elements de pairs pour savoir si il est dedans et si il ne l'est pas on le met dans impair.


Correct. C'est pédagogiquement simple et vu la longueur des listes ça va pas spécialement être un problème (des versions théoriquement plus efficaces en O(n) sont données derrière dans le thread)

yertle75 a écrit :

Je suppose que python implémente ca d'une meilleure manière


pas du tout.

yertle75 a écrit :

Vu que tout le monde adore les compréhensions de liste je suppose que c'est le cas et que python est TRES intelligent mais si qqu'un pouvait detailler un peu le fonctionnement d'une compréhension de liste j'aimerais bien ^^ et pas juste de savoir que ca marche de manière miraculeuse (oui oui, je sais les programmeurs venant du C sont chiant a tout vouloir comprendre ;))


Une listcomp desugar trivialement:

Code :
  1. [op(a, b) for a in aa for b in bb if cond1(a) if cond2(b)]


devient

Code :
  1. out = []
  2. for a in aa:
  3.    for b in bb:
  4.        if cond1(a):
  5.            if cond2(b):
  6.                out.append(op(a, b))


gilou a écrit :


2) une compréhension de liste, c'est un nom bien pompeux pour ce qui n'est qu'un grep de liste


C'est bien devrais en informer Rod Burstall et John Darlington, ces salauds ayant introduit le concept dans NPL en 1977, inspirés par des enflures de mathématiciens

 

Accessoirement le rôle premier des listcomps c'est map, pas filter.

gilou a écrit :

Code :
  1. @suite = (21, 45, 68, 91, 165, 16, 12, 2, 5);
  2. # construit et remplit les listes @pair et @impair
  3. map {push @{('pair', 'impair')[$_&1]}, $_} @suite;


L'idée sous-jacente est que si j'ai une liste @suite, et une fonction f des valeurs de la liste dans les nombres naturels, on peut partitionner la liste en fonction des valeurs de f en faisant map {push $partition[f($_)], $_} @suite;


T'as vu que t'avais 7 ans de retard? http://forum.hardware.fr/hfr/Progr [...] m#t1521927


Message édité par masklinn le 16-02-2016 à 14:20:36

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°2275771
gilou
Modérateur
Modzilla
Posté le 16-02-2016 à 21:40:46  profilanswer
 

Citation :

Accessoirement le rôle premier des listcomps c'est map, pas filter.


La def de wikipedia: the list comprehension, which combines map and filter operations over one or more lists.
et aussi:  filter is a higher-order function that processes a data structure (typically a list) in some order to produce a new data structure containing exactly those elements of the original data structure for which a given predicate returns the boolean value true.
Donc filter, c'est ce qu'on nomme grep en perl, et map est map en perl, bref, on retombe exactement sur ce que j'avais dit:  

Citation :

une compréhension de liste, c'est un nom bien pompeux pour ce qui n'est qu'un grep de liste (ou une  combinaison d'un grep et d'un map)

[:souk]  
 
Et comme je suis moi même une de ces enflures de mathématicien, je pense toujours que c'est un nom pompeux, la transposition de la dénomination mathématique, liste définie par compréhension aurait été beaucoup moins jargonnesque que compréhension de liste (ça s'apprenait au collège de mon temps, les deux types de définition d'un ensemble, l'extension et la compréhension).
 
A+,

Message cité 1 fois
Message édité par gilou le 16-02-2016 à 21:43:08

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2275772
masklinn
í dag viðrar vel til loftárása
Posté le 16-02-2016 à 22:11:08  profilanswer
 

gilou a écrit :

Citation :

Accessoirement le rôle premier des listcomps c'est map, pas filter.


La def de wikipedia: the list comprehension, which combines map and filter operations over one or more lists.
et aussi:  filter is a higher-order function that processes a data structure (typically a list) in some order to produce a new data structure containing exactly those elements of the original data structure for which a given predicate returns the boolean value true.
Donc filter, c'est ce qu'on nomme grep en perl, et map est map en perl, bref, on retombe exactement sur ce que j'avais dit:

Citation :

une compréhension de liste, c'est un nom bien pompeux pour ce qui n'est qu'un grep de liste (ou une  combinaison d'un grep et d'un map)

[:souk]


J'dis juste que t'es dans le mauvais sens, dans une listcomp la collection est toujours présente, le filtrage pas [:spamafote]

 

Et accessoirement les listcomps font aussi une itération multiple pas trivialement expressible via map. Après on peut dire que c'est une vulgaire composition de réductions, mais ça se finit en turing tarpit [:spamafote]

gilou a écrit :

Et comme je suis moi même une de ces enflures de mathématicien, je pense toujours que c'est un nom pompeux, la transposition de la dénomination mathématique, liste définie par compréhension aurait été beaucoup moins jargonnesque que compréhension de liste (ça s'apprenait au collège de mon temps, les deux types de définition d'un ensemble, l'extension et la compréhension).


OK [:petrus75] Plains toi à yertle75 que sa traduction te déplait, il n'y a pas de différence en VO [:petrus75]


Message édité par masklinn le 16-02-2016 à 22:12:12

---------------
I've never understood the compulsion to use Web technologies minus the Web's security and deployment models. It seems a bit like throwing the orange away and eating the peel. — @ justinschuh‬
n°2275776
gilou
Modérateur
Modzilla
Posté le 16-02-2016 à 23:22:01  profilanswer
 

> J'dis juste que t'es dans le mauvais sens, dans une listcomp la collection est toujours présente, le filtrage pas
 
Dans la jargonnique python sans doute, dans le concept mathématique, non (cf un sous ensemble d'un ensemble défini en compréhension par filtrage sur la valeur d'un prédicat booléen).
 
> Plains toi à yertle75 que sa traduction te déplait
Elle est manifestement pas de lui, on la voit pas mal sur internet, alors que l'autre traduction, liste en compréhension, serait bien plus appropriée.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [python]Pair et impair

 

Sujets relatifs
[python]Pocket pc[python] c_char_p ???
C est comment python?[BIBLIOLINK Python] Tutorial programmation ADO
[python] xml et encoding / bug ![Python]Comparaison de fichiers
[python] control+c ne marche pas ???Gestion de la configuration d'une application Python
[python] xml / dom / dtd ... cherche connaisseurs !Sortie de Python 2.5
Plus de sujets relatifs à : [python]Pair et impair


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR