Accès le seul élément d'un ensemble
J'ai un set
en Python à partir de laquelle je suis supprimer les éléments un par un en fonction d'une condition. Quand l'ensemble est laissé avec seulement 1 élément, j'ai besoin de retour de cet élément. Comment puis-je accéder à cet élément de l'ensemble?
Un exemple simplifié:
S = set(range(5))
for i in range(4):
S = S - {i}
# now S has only 1 element: 4
return ? # how should I access this element
# a lame way is the following
# for e in S:
# return S
- Si vous voulez supprimer un élément d'un ensemble,
S.remove(i)
est plus rapide. (Notez queS.remove(i)
modifieS
, tandis queS = S - {i}
le remplace par un nouvel ensemble.)
Vous devez vous connecter pour publier un commentaire.
Utilisation
set.pop
:Dans votre cas, il serait:
Note toutefois que cela va supprimer l'élément de l'ensemble. Si cela n'est pas souhaitable, vous pouvez utiliser
min
|max
:Démo:
set.pop
bien qu'il n'est pas trop surprenant, je suppose. Et ici, je l'aurais faitnext(iter(S))
for
boucle ounext(iter(S))
fonctionne mieux.min(S)
, bien que j'ai Officiellement en charge(tm)next(iter(S))
.max()
oumin()
sont juste ... mal. Trop surprenant de la méfiance du lecteur de code.Je voudrais utiliser:
C'est non destructive, et qui fonctionne même quand il n'y a plus d'un élément dans l'ensemble. Encore mieux, il a une option pour fournir une valeur par défaut
e = next(iter(S), default)
.Vous pouvez également utiliser le déballage:
Le déballage technique est susceptible d'être le moyen le plus rapide et il comprend la vérification des erreurs pour assurez-vous que le jeu n'a qu'un seul membre. L'inconvénient est qu'il fait un peu bizarre.
[e] = S
.Désolé, la fin de la partie. Pour accéder à un élément d'un ensemble, vous pouvez toujours lancer le jeu dans une liste et vous pouvez alors utiliser l'indexation de retourner la valeur que vous souhaitez.
Dans le cas de votre exemple:
list
est significativement plus lentement que d'utiliseriter
. stackoverflow.com/questions/59825/...Vous pouvez affecter le dernier élément d'une variable en utilisant
star operation
.Maintenant la varible
b
ont unstring object
.Si la seule elemant est un nombre, vous pouvez utiliser
int()
: