clase sllist del módulo llist en Python

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *