Quand on sait qu'une liste Python contient toujours un seul élément, existe-t-il un moyen d'y accéder autre que:
mylist[0]
Vous pouvez demander: "Pourquoi voudriez-vous?". La curiosité seule. Il semble y avoir une autre façon de faire tout en Python.
Séquence de déballage:
singleitem, = mylist
# Identical in behavior (byte code produced is the same),
# but arguably more readable since a lone trailing comma could be missed:
[singleitem] = mylist
Utilisation explicite du protocole itérateur:
singleitem = next(iter(mylist))
Pop destructrice:
singleitem = mylist.pop()
Indice négatif:
singleitem = mylist[-1]
Défini via une seule itération for
(car la variable de boucle reste disponible avec sa dernière valeur à la fin d'une boucle):
for singleitem in mylist: break
Beaucoup d'autres (combinant ou modifiant des bits de ce qui précède, ou s'appuyant autrement sur une itération implicite), mais vous voyez l'idée.
J'ajouterai que le more_itertools
La bibliothèque a un outil qui retourne un élément d’un itérable.
from more_itertools import one
iterable = ["foo"]
one(iterable)
# "foo"
En plus, more_itertools.one
déclenche une erreur si l'itérable est vide ou contient plusieurs éléments.
iterable = []
one(iterable)
# ValueError: not enough values to unpack (expected 1, got 0)
iterable = ["foo", "bar"]
one(iterable)
# ValueError: too many values to unpack (expected 1)