Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur
deux instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur
deux instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur
deux instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur
deux instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur
deux instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur
deux instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur deux
instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur deux
instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Elle a le désavantage de diviser la définition de mon ensemble itéré sur deux
instructions, et d'approfondir inutilement l'indentation.
J'avais envisagé les listes en intention, ce qui me donnait ceci :
>for e in [e for e in list1 if e not in list2]:
> <instructions>
Mais comme vous pouvez l'apprécier, ça n'a plus grand chose de lisible.
La syntaxe suivante dérivée des listes en intention ne fonctionne pas :
>for e in list1 if e not in list2 :
Avez-vous une meilleure solution à me proposer ?
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Le Fri, 06 Nov 2009 10:55:38 +0100, Kaoron a écrit :Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?
Dans un cas simple, j'ai remplacé :
l5 = range(5, 1000, 5)
l3 = range(3, 1000, 3)
l = l3
for i in l5:
if not i in l3:
l.append(i)
par :
s5 = set(range(5, 1000, 5))
s3 = set(range(3, 1000, 3))
s = s3 | s5
Le Fri, 06 Nov 2009 10:55:38 +0100, Kaoron a écrit :
Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?
Dans un cas simple, j'ai remplacé :
l5 = range(5, 1000, 5)
l3 = range(3, 1000, 3)
l = l3
for i in l5:
if not i in l3:
l.append(i)
par :
s5 = set(range(5, 1000, 5))
s3 = set(range(3, 1000, 3))
s = s3 | s5
Le Fri, 06 Nov 2009 10:55:38 +0100, Kaoron a écrit :Bonjour,
Pouvez-vous m'enrichir d'une méthode élégante pour itérer sur une liste
privée de certains de ses éléments ?
La solution que j'emploie actuellement est celle-ci :
>for e in list1 :
> if not e in list2 :
> <instructions>
Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?
Dans un cas simple, j'ai remplacé :
l5 = range(5, 1000, 5)
l3 = range(3, 1000, 3)
l = l3
for i in l5:
if not i in l3:
l.append(i)
par :
s5 = set(range(5, 1000, 5))
s3 = set(range(3, 1000, 3))
s = s3 | s5
PIGUET Bruno, le 06/11/2009 a écrit :
Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?
avec un bon gain d'efficacité.
Sûr ?
PIGUET Bruno, le 06/11/2009 a écrit :
Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?
avec un bon gain d'efficacité.
Sûr ?
PIGUET Bruno, le 06/11/2009 a écrit :
Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?
avec un bon gain d'efficacité.
Sûr ?
Mais avec les set on change d'algo.
> avec un bon gain d'efficacité.
Sûr ?
Mais avec les set on change d'algo.
> avec un bon gain d'efficacité.
Sûr ?
Mais avec les set on change d'algo.
> avec un bon gain d'efficacité.
Sûr ?
Le Fri, 06 Nov 2009 14:54:50 +0100, Pierre Maurette a écrit :Mais avec les set on change d'algo.
C'est pour ça que j'ai commencé mon message par :
"Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?"
Le premier bout de code que j'ai recopié était une façon de faire une
liste unique en disant "si un nouvel élément n'est pas (déjà) dans la
liste, je l'ajoute (append)". Donc l'opérateur de set correspondant était
bien "|".
Mais cette transformation d'exclusion en union n'est pas forcément
celui que souhaitais l'OP. D'où mon introduction prudente.
avec un bon gain d'efficacité.
Sûr ?
Le bon benchmarking est un art difficile. Sur mon cas, et ce que j'ai pu
en mesurer, oui.
Le Fri, 06 Nov 2009 14:54:50 +0100, Pierre Maurette a écrit :
Mais avec les set on change d'algo.
C'est pour ça que j'ai commencé mon message par :
"Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?"
Le premier bout de code que j'ai recopié était une façon de faire une
liste unique en disant "si un nouvel élément n'est pas (déjà) dans la
liste, je l'ajoute (append)". Donc l'opérateur de set correspondant était
bien "|".
Mais cette transformation d'exclusion en union n'est pas forcément
celui que souhaitais l'OP. D'où mon introduction prudente.
avec un bon gain d'efficacité.
Sûr ?
Le bon benchmarking est un art difficile. Sur mon cas, et ce que j'ai pu
en mesurer, oui.
Le Fri, 06 Nov 2009 14:54:50 +0100, Pierre Maurette a écrit :Mais avec les set on change d'algo.
C'est pour ça que j'ai commencé mon message par :
"Est-ce une situation où il est possible d'utiliser les ensembles
("sets") ?"
Le premier bout de code que j'ai recopié était une façon de faire une
liste unique en disant "si un nouvel élément n'est pas (déjà) dans la
liste, je l'ajoute (append)". Donc l'opérateur de set correspondant était
bien "|".
Mais cette transformation d'exclusion en union n'est pas forcément
celui que souhaitais l'OP. D'où mon introduction prudente.
avec un bon gain d'efficacité.
Sûr ?
Le bon benchmarking est un art difficile. Sur mon cas, et ce que j'ai pu
en mesurer, oui.
Ca va surement en faire hurler plus d'un mais j'aime bien
(et puis c'est vendredi) :
for e in list1:
if e in list2: continue
<instructions-sans-approfondir-inutilement-l-indentation>
J'adore faire des trucs comme ça dans les boucles :
on peut mettre plein de tests en début de boucle, pour ignorer toute une
série de cas, sans approfondir inutilement...
Ca évite parfois de se retrouver avec le bloc d'instructions "utiles"
perdu dans une 3eme, 4eme niveau d'indentation, ce qui n'est pas
forcément plus lisible que quelques instructions continue bien
identifiées en début de boucle.
Ca va surement en faire hurler plus d'un mais j'aime bien
(et puis c'est vendredi) :
for e in list1:
if e in list2: continue
<instructions-sans-approfondir-inutilement-l-indentation>
J'adore faire des trucs comme ça dans les boucles :
on peut mettre plein de tests en début de boucle, pour ignorer toute une
série de cas, sans approfondir inutilement...
Ca évite parfois de se retrouver avec le bloc d'instructions "utiles"
perdu dans une 3eme, 4eme niveau d'indentation, ce qui n'est pas
forcément plus lisible que quelques instructions continue bien
identifiées en début de boucle.
Ca va surement en faire hurler plus d'un mais j'aime bien
(et puis c'est vendredi) :
for e in list1:
if e in list2: continue
<instructions-sans-approfondir-inutilement-l-indentation>
J'adore faire des trucs comme ça dans les boucles :
on peut mettre plein de tests en début de boucle, pour ignorer toute une
série de cas, sans approfondir inutilement...
Ca évite parfois de se retrouver avec le bloc d'instructions "utiles"
perdu dans une 3eme, 4eme niveau d'indentation, ce qui n'est pas
forcément plus lisible que quelques instructions continue bien
identifiées en début de boucle.
Alain BARTHE wrote:Ca va surement en faire hurler plus d'un mais j'aime bien
(et puis c'est vendredi) :
for e in list1:
if e in list2: continue
<instructions-sans-approfondir-inutilement-l-indentation>
J'adore faire des trucs comme ça dans les boucles :
on peut mettre plein de tests en début de boucle, pour ignorer toute une
série de cas, sans approfondir inutilement...
Ca évite parfois de se retrouver avec le bloc d'instructions "utiles"
perdu dans une 3eme, 4eme niveau d'indentation, ce qui n'est pas
forcément plus lisible que quelques instructions continue bien
identifiées en début de boucle.
Les deux solutions que vous proposez me paraissent très lisibles et
explicites, ce qui est en quelque sorte mon critère suprême d'élégance.
Je vois par ailleurs que les deux ont été proposées en réponse à une
proposition de changement de la syntaxe de for sur la ML python-dev :
http://mail.python.org/pipermail/python-dev/2008-May/079556.html
http://mail.python.org/pipermail/python-dev/2008-May/079567.html
C'est le genre d'enrichissement que j'étais venu chercher, merci
beaucoup :)
Alain BARTHE wrote:
Ca va surement en faire hurler plus d'un mais j'aime bien
(et puis c'est vendredi) :
for e in list1:
if e in list2: continue
<instructions-sans-approfondir-inutilement-l-indentation>
J'adore faire des trucs comme ça dans les boucles :
on peut mettre plein de tests en début de boucle, pour ignorer toute une
série de cas, sans approfondir inutilement...
Ca évite parfois de se retrouver avec le bloc d'instructions "utiles"
perdu dans une 3eme, 4eme niveau d'indentation, ce qui n'est pas
forcément plus lisible que quelques instructions continue bien
identifiées en début de boucle.
Les deux solutions que vous proposez me paraissent très lisibles et
explicites, ce qui est en quelque sorte mon critère suprême d'élégance.
Je vois par ailleurs que les deux ont été proposées en réponse à une
proposition de changement de la syntaxe de for sur la ML python-dev :
http://mail.python.org/pipermail/python-dev/2008-May/079556.html
http://mail.python.org/pipermail/python-dev/2008-May/079567.html
C'est le genre d'enrichissement que j'étais venu chercher, merci
beaucoup :)
Alain BARTHE wrote:Ca va surement en faire hurler plus d'un mais j'aime bien
(et puis c'est vendredi) :
for e in list1:
if e in list2: continue
<instructions-sans-approfondir-inutilement-l-indentation>
J'adore faire des trucs comme ça dans les boucles :
on peut mettre plein de tests en début de boucle, pour ignorer toute une
série de cas, sans approfondir inutilement...
Ca évite parfois de se retrouver avec le bloc d'instructions "utiles"
perdu dans une 3eme, 4eme niveau d'indentation, ce qui n'est pas
forcément plus lisible que quelques instructions continue bien
identifiées en début de boucle.
Les deux solutions que vous proposez me paraissent très lisibles et
explicites, ce qui est en quelque sorte mon critère suprême d'élégance.
Je vois par ailleurs que les deux ont été proposées en réponse à une
proposition de changement de la syntaxe de for sur la ML python-dev :
http://mail.python.org/pipermail/python-dev/2008-May/079556.html
http://mail.python.org/pipermail/python-dev/2008-May/079567.html
C'est le genre d'enrichissement que j'étais venu chercher, merci
beaucoup :)