¿Obteniendo solo un elemento de una lista de un solo elemento en Python?

Cuando se sabe que una lista de Python siempre contiene un solo elemento, ¿hay otra forma de acceder a ella que no sea:

mylist[0] 

Puede preguntar, ‘¿Por qué querría hacerlo?’. La curiosidad sola. Parece que hay una forma alternativa de hacer todo en Python.

Desembalaje de secuencia:

 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 

Uso explícito del protocolo iterador:

 singleitem = next(iter(mylist)) 

Pop destructivo

 singleitem = mylist.pop() 

Índice negativo:

 singleitem = mylist[-1] 

Se establece mediante una iteración única for (porque la variable de bucle permanece disponible con su último valor cuando termina un bucle):

 for singleitem in mylist: break 

Muchos otros (combinando o variando bits de lo anterior, o confiando en la iteración implícita), pero entiendes la idea.

Agregaré que la biblioteca more_itertools tiene una herramienta que devuelve un elemento de un iterable.

 from more_itertools import one iterable = ["foo"] one(iterable) # "foo" 

Además, more_itertools.one genera un error si el iterable está vacío o tiene más de un elemento.

 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)