J'ai un set singleton, en fait le but du set est de ne traiter que s'il est singleton. Pour en récupérer la valeur, j'ai fait:
for val in theset: utiliser val
A la relecture ultérieure, c'est épouvantable, enfin, il me semble. J'ai fait alors:
val = list(theset)[0]
Y a-t-il une autre solution ?
Merci, bonne journée...
Peut-etre theset.__iter__().next()
Mais chez moi, la boucle :
theset = set (range (10))
for val in theset: print val
Fonctionne sans probleme. Quel est le probleme dans ton cas ?
Sinon, il y a bien : val = theset.pop() qui renvoie mais supprime en meme temps une des valeurs, tu devras la rempiler par theset.add (val)
Pierre Maurette
[...]
Peut-etre theset.__iter__().next()
Mais chez moi, la boucle :
theset = set (range (10))
for val in theset: print val
Fonctionne sans probleme. Quel est le probleme dans ton cas ?
Sinon, il y a bien : val = theset.pop() qui renvoie mais supprime en meme temps une des valeurs, tu devras la rempiler par theset.add (val)
Merci beaucoup. J'avais mal lu la documention, je n'avais pas vu le second tableau, celui des opérations qui ne s'appliquent pas à frozenset. pop() me va très bien, et j'ai trouvé discard() qui allège le code à un autre endroit.
Mon problème avec la boucle for était du niveau de la coquetterie. Je vous explique en gros. Je veux faire un calcul et m'assurer de la cohérence des unités (c'est du CSS, ne pas additionner des px et des em par exemple. En revanche je peux faire 10px + 5, compris comme 10px + 5px). Donc, au cours du parse, je remplis un set d'unités. A la fin, je dois avoir exactement une valeur plus éventuellement un ''. Je discard() le '', je vérifie que len() du set vaut 1 (singleton), sinon je suis en "erreur de syntaxe". Je n'ai plus qu'à pop-er cette valeur et à l'utiliser. Ce qui m'embêtait c'était cette boucle qui ne pouvait être parcourue qu'une fois et qui risquait d'être étrange à la relecture.
-- Pierre Maurette
[...]
Peut-etre theset.__iter__().next()
Mais chez moi, la boucle :
theset = set (range (10))
for val in theset:
print val
Fonctionne sans probleme. Quel est le probleme dans ton cas ?
Sinon, il y a bien : val = theset.pop()
qui renvoie mais supprime en meme temps une des valeurs,
tu devras la rempiler par theset.add (val)
Merci beaucoup. J'avais mal lu la documention, je n'avais pas vu le
second tableau, celui des opérations qui ne s'appliquent pas à
frozenset.
pop() me va très bien, et j'ai trouvé discard() qui allège le code à un
autre endroit.
Mon problème avec la boucle for était du niveau de la coquetterie. Je
vous explique en gros. Je veux faire un calcul et m'assurer de la
cohérence des unités (c'est du CSS, ne pas additionner des px et des em
par exemple. En revanche je peux faire 10px + 5, compris comme 10px +
5px).
Donc, au cours du parse, je remplis un set d'unités. A la fin, je dois
avoir exactement une valeur plus éventuellement un ''. Je discard() le
'', je vérifie que len() du set vaut 1 (singleton), sinon je suis en
"erreur de syntaxe". Je n'ai plus qu'à pop-er cette valeur et à
l'utiliser. Ce qui m'embêtait c'était cette boucle qui ne pouvait être
parcourue qu'une fois et qui risquait d'être étrange à la relecture.
Fonctionne sans probleme. Quel est le probleme dans ton cas ?
Sinon, il y a bien : val = theset.pop() qui renvoie mais supprime en meme temps une des valeurs, tu devras la rempiler par theset.add (val)
Merci beaucoup. J'avais mal lu la documention, je n'avais pas vu le second tableau, celui des opérations qui ne s'appliquent pas à frozenset. pop() me va très bien, et j'ai trouvé discard() qui allège le code à un autre endroit.
Mon problème avec la boucle for était du niveau de la coquetterie. Je vous explique en gros. Je veux faire un calcul et m'assurer de la cohérence des unités (c'est du CSS, ne pas additionner des px et des em par exemple. En revanche je peux faire 10px + 5, compris comme 10px + 5px). Donc, au cours du parse, je remplis un set d'unités. A la fin, je dois avoir exactement une valeur plus éventuellement un ''. Je discard() le '', je vérifie que len() du set vaut 1 (singleton), sinon je suis en "erreur de syntaxe". Je n'ai plus qu'à pop-er cette valeur et à l'utiliser. Ce qui m'embêtait c'était cette boucle qui ne pouvait être parcourue qu'une fois et qui risquait d'être étrange à la relecture.
-- Pierre Maurette
Alain BARTHE
[...]
Peut-etre theset.__iter__().next()
Mais chez moi, la boucle :
theset = set (range (10))
for val in theset: print val
Fonctionne sans probleme. Quel est le probleme dans ton cas ?
Sinon, il y a bien : val = theset.pop() qui renvoie mais supprime en meme temps une des valeurs, tu devras la rempiler par theset.add (val)
Merci beaucoup. J'avais mal lu la documention, je n'avais pas vu le second tableau, celui des opérations qui ne s'appliquent pas à frozenset. pop() me va très bien, et j'ai trouvé discard() qui allège le code à un autre endroit.
Mon problème avec la boucle for était du niveau de la coquetterie. Je vous explique en gros. Je veux faire un calcul et m'assurer de la cohérence des unités (c'est du CSS, ne pas additionner des px et des em par exemple. En revanche je peux faire 10px + 5, compris comme 10px + 5px). Donc, au cours du parse, je remplis un set d'unités. A la fin, je dois avoir exactement une valeur plus éventuellement un ''. Je discard() le '', je vérifie que len() du set vaut 1 (singleton), sinon je suis en "erreur de syntaxe". Je n'ai plus qu'à pop-er cette valeur et à l'utiliser. Ce qui m'embêtait c'était cette boucle qui ne pouvait être parcourue qu'une fois et qui risquait d'être étrange à la relecture.
Re,
En admettant que tu ais une liste, y compris avec des doublons de tes unites :
l = ["px", "px", "px", "em"] s = set (l)
if len (s) != 1: print "probleme" else: u, = s
La derniere ligne permet aussi de recuperer la valeur, sans la sortir du set.
La , est obligatoire pour qu'il considere la partie gauche comme un tuple de valeurs (ici une seule) a affecter avec le contenu de l'ensemble.
Si on a un ensemble de 3 valeurs : x,y,z = s
[...]
Peut-etre theset.__iter__().next()
Mais chez moi, la boucle :
theset = set (range (10))
for val in theset:
print val
Fonctionne sans probleme. Quel est le probleme dans ton cas ?
Sinon, il y a bien : val = theset.pop()
qui renvoie mais supprime en meme temps une des valeurs,
tu devras la rempiler par theset.add (val)
Merci beaucoup. J'avais mal lu la documention, je n'avais pas vu le
second tableau, celui des opérations qui ne s'appliquent pas à frozenset.
pop() me va très bien, et j'ai trouvé discard() qui allège le code à un
autre endroit.
Mon problème avec la boucle for était du niveau de la coquetterie. Je
vous explique en gros. Je veux faire un calcul et m'assurer de la
cohérence des unités (c'est du CSS, ne pas additionner des px et des em
par exemple. En revanche je peux faire 10px + 5, compris comme 10px + 5px).
Donc, au cours du parse, je remplis un set d'unités. A la fin, je dois
avoir exactement une valeur plus éventuellement un ''. Je discard() le
'', je vérifie que len() du set vaut 1 (singleton), sinon je suis en
"erreur de syntaxe". Je n'ai plus qu'à pop-er cette valeur et à
l'utiliser. Ce qui m'embêtait c'était cette boucle qui ne pouvait être
parcourue qu'une fois et qui risquait d'être étrange à la relecture.
Re,
En admettant que tu ais une liste, y compris avec des doublons de tes
unites :
l = ["px", "px", "px", "em"]
s = set (l)
if len (s) != 1:
print "probleme"
else:
u, = s
La derniere ligne permet aussi de recuperer la valeur, sans la sortir du
set.
La , est obligatoire pour qu'il considere la partie gauche comme un
tuple de valeurs (ici une seule) a affecter avec le contenu de l'ensemble.
Fonctionne sans probleme. Quel est le probleme dans ton cas ?
Sinon, il y a bien : val = theset.pop() qui renvoie mais supprime en meme temps une des valeurs, tu devras la rempiler par theset.add (val)
Merci beaucoup. J'avais mal lu la documention, je n'avais pas vu le second tableau, celui des opérations qui ne s'appliquent pas à frozenset. pop() me va très bien, et j'ai trouvé discard() qui allège le code à un autre endroit.
Mon problème avec la boucle for était du niveau de la coquetterie. Je vous explique en gros. Je veux faire un calcul et m'assurer de la cohérence des unités (c'est du CSS, ne pas additionner des px et des em par exemple. En revanche je peux faire 10px + 5, compris comme 10px + 5px). Donc, au cours du parse, je remplis un set d'unités. A la fin, je dois avoir exactement une valeur plus éventuellement un ''. Je discard() le '', je vérifie que len() du set vaut 1 (singleton), sinon je suis en "erreur de syntaxe". Je n'ai plus qu'à pop-er cette valeur et à l'utiliser. Ce qui m'embêtait c'était cette boucle qui ne pouvait être parcourue qu'une fois et qui risquait d'être étrange à la relecture.
Re,
En admettant que tu ais une liste, y compris avec des doublons de tes unites :
l = ["px", "px", "px", "em"] s = set (l)
if len (s) != 1: print "probleme" else: u, = s
La derniere ligne permet aussi de recuperer la valeur, sans la sortir du set.
La , est obligatoire pour qu'il considere la partie gauche comme un tuple de valeurs (ici une seule) a affecter avec le contenu de l'ensemble.
Si on a un ensemble de 3 valeurs : x,y,z = s
MC
'soir !
Tu peux faire print iter(s).next()
Mais, bon, ce n'est pas terrible...
En fait, AMHA, le plus simple, c'est de faire une fonction, avec list() ou iter().next(), au choix, qui retournera ce que tu veux.
-- @-salutations
Michel Claveau
'soir !
Tu peux faire
print iter(s).next()
Mais, bon, ce n'est pas terrible...
En fait, AMHA, le plus simple, c'est de faire une fonction, avec list()
ou iter().next(), au choix, qui retournera ce que tu veux.