llist es un módulo de extensión de CPython que proporciona una estructura de lista enlazada básica. Son significativamente más rápidos que quitar la cola e incluso que la lista estándar.
Lista de enlaces individuales
Es una estructura de datos unidireccional simple, por lo tanto, solo se puede atravesar desde la cabeza hasta el último Node. Cada Node de una lista enlazada individualmente contiene datos y la dirección del Node que lo precede. Para enmarcar esto simplemente, cada Node apunta al Node que le sigue. El siguiente diagrama muestra la estructura general de una lista enlazada simple:
En llist, hay un objeto sllist que ayuda a implementar con éxito una lista enlazada individualmente.
Listar objetos
class llist.sllist([iterable]): devuelve una nueva lista enlazada inicializada a partir de los iterables proporcionados. Si no se proporcionan iterables, la lista enlazada se produce pero está vacía.
import llist from llist import sllist, sllistiterator lst = llist.sllist(['first', 'second', 'third']) print(lst)
Producción:
sllist([first, second, third])
sllist admite los siguientes atributos:
- primero : atributo de solo lectura, imprime el primer atributo de la lista y Ninguno si la lista está vacía.
print
(lst.first)
Producción:
sllistnode(first)
- last : propiedad de solo lectura, devuelve el último elemento de la lista (cola) y Ninguno si la lista está vacía.
print
(lst.last)
Producción:
sllistnode(third)
- tamaño : atributo de solo lectura que devuelve el tamaño de la lista
print
(lst.size)
Producción:
3
sslist también admite los siguientes métodos:
- append(x) : agrega x al lado derecho de la lista y devuelve un Node sllist insertado. Si x ya es un Node sllist, se crea un nuevo Node y se inicializa con el valor extraído de x.
lst.append(
'fourth'
)
print
(lst)
Producción:
sllist([first, second, third, fourth])
- appendleft(x) : agrega x al lado izquierdo de la lista y devuelve un Node sllist insertado. Si x ya es un Node sllist, se crea un nuevo Node y se inicializa con el valor extraído de x.
lst.appendleft(
'fourth'
)
print
(lst)
Producción:
sllist([fourth, first, second, third])
- appendright(x) : agrega x al lado derecho de la lista y devuelve un Node sllist insertado. Si x ya es un Node sllist, se crea un nuevo Node y se inicializa con el valor extraído de x.
lst.appendright(
'fourth'
)
print
(lst)
Producción:
sllist([first, second, third, fourth])
- clear() borra todos los Nodes de la lista.
lst.clear()
print
(lst)
Producción:
sllist()
- extender (iterable) : agrega elementos del iterable al lado derecho de la lista
lst.extend([
'fourth'
,
'fifth'
])
print
(lst)
Producción:
sllist([first, second, third, fourth, fifth])
- extendleft(iterable) : añade un elemento del iterable al lado izquierdo de la lista.
lst.extendleft([
'fourth'
,
'fifth'
])
print
(lst)
Producción:
sllist([fifth, fourth, first, second, third])
- extendright(iterable) : agrega elementos del iterable al lado derecho de la lista
lst.extend([
'fourth'
,
'fifth'
])
print
(lst)
Producción:
sllist([first, second, third, fourth, fifth])
- insertafter(x, node) : inserta x después del Node especificado, el argumento x debe ser un Node sllist, el valor de x se extrae y se le da al Node que se insertará.
node
=
lst.nodeat(
0
)
lst.insertafter(
'fourth'
, node)
print
(lst)
Producción:
sllist([first, fourth, second, third])
- insertbefore(x, Node) : inserta x antes del Node especificado, el argumento x debe ser un Node slllist, el valor de x se extrae y se le da al Node que se va a insertar.
node
=
lst.nodeat(
1
)
lst.insertbefore(
'fourth'
, node)
print
(lst)
Producción:
sllist([first, fourth, second, third])
- nodeat() : devuelve el Node en el índice especificado. Se permiten índices negativos si el conteo se inicia desde el lado derecho.
node
=
lst.nodeat(
1
)
print
(node)
Producción:
sllistnode(second)
- pop() : elimina un elemento del lado derecho de la lista.
lst.pop()
print
(lst)
Producción:
sllist([first, second])
- popleft() : elimina un elemento del lado izquierdo de la lista.
lst.popleft()
print
(lst)
Producción:
sllist([second, third])
- popright() : elimina un elemento del lado derecho de la lista.
lst.pop()
print
(lst)
Producción:
sllist([first, second])
- remove(node) : elimina el Node especificado
node
=
lst.nodeat(
1
)
lst.remove(node)
print
(lst)
Producción:
sllist([first, third])
- rotar (n) : rota la lista n pasos. Si n es positivo girar hacia la derecha y si es negativo hacia la izquierda.
lst.rotate(
-
1
)
print
(lst)
Producción:
sllist([second, third, first])
Además de estos métodos, sllist admite iteración, cmp(lst1, lst2), operadores de comparación enriquecidos, tiempo constante len(lst), hash(lst) y referencias de subíndice lst[1234] para acceder a elementos por índice.
Más adelante discutimos más objetos de llist que están relacionados con sllist:
sllistnode
Implementa un Node en una lista enlazada individualmente que se puede inicializar opcionalmente si se proporciona un valor.
node = llist.sllistnode('zeroth') print(node)
Producción:
sllistnode(zeroth)
Este objeto también admite los siguientes atributos:
- siguiente : siguiente Node en la lista
- valor : extrae el valor almacenado en un Node específico
node = lst.nodeat(0) print(node.next) print(node.value)
Producción:
sllistnode(second) first
objeto sllisterator
devuelve un nuevo iterador de lista enlazada individualmente. Estos objetos no los crean los usuarios, sino que los devuelve el método sllist.__iter__() para mantener el estado de iteración. La iteración a través de la interfaz sllistiterator producirá directamente valores almacenados en los Nodes.
import llist from llist import sllist lst = llist.sllist(['first', 'second', 'third']) for value in lst: print(value)
Producción:
first second third
Publicación traducida automáticamente
Artículo escrito por vanshikagoyal43 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA