tuplas - sacar elementos de una lista python
¿Obtiene solo un elemento de una lista de un solo elemento en Python? (2)
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)
Cuando se sabe que una lista de Python siempre contiene un único elemento, ¿hay alguna otra forma de acceder a ella que no sea:
mylist[0]
Puede preguntar: "¿Por qué querrías hacerlo?". La curiosidad sola. Parece que hay una forma alternativa de hacer todo en Python.
Desempaque 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]
Establezca mediante una sola iteración
for
(porque la variable del bucle permanece disponible con su último valor cuando finaliza un bucle):
for singleitem in mylist: break
Muchos otros (combinando o variando bits de lo anterior, o confiando de otra manera en la iteración implícita), pero se entiende la idea.