Usar lista circular en Python
-
Use
itertools.cycle
para usar la lista circular en Python -
Use
generadores
para usar la lista circular en Python
Una lista enlazada regular tiene un nodo raíz donde cada nodo tiene un puntero al siguiente nodo y un dato excepto el último nodo, que no tiene un siguiente nodo (por lo que tiene un valor Nulo
) que nos dice que ese es el último nodo. Sin embargo, en una lista enlazada circular, el último nodo tiene un puntero al primer nodo de la lista.
Entonces, las listas enlazadas circulares son listas enlazadas estructuradas de tal manera que todos los nodos dentro de dicha estructura forman un círculo. Esta estructura de datos lineal y dinámica cuyos nodos no pueden ser Ninguno
; tiene el último nodo conectado al primer nodo, por lo que cada nodo puede conducir al anterior o al siguiente, y así sucesivamente.
Normalmente, un objeto iterador
nos permite pasar de un elemento a otro dentro de una estructura de datos de lista o diccionario. Con una lista circular, la conexión entre cada nodo lo permite especialmente usando funciones integradas.
Este artículo analiza la implementación y el uso de una lista circular en Python, de forma nativa o con módulos.
Use itertools.cycle
para usar la lista circular en Python
Python tiene un módulo incorporado llamado itertools
que permite secuencias con iteradores y bucles funcionales. Dentro de este módulo, los iteradores (métodos) ayudan a desarrollar sistemas eficientes para recorrer diferentes contextos, desde secuencias de entrada cortas hasta escenarios combinatorios.
Más importante de usar, sin embargo, es el iterador cycle()
que es un iterador infinito que toma una lista y la itera infinitamente.
Esto ocurre al crear un iterador que devuelve sus elementos y copia cada elemento del iterable. Luego, devuelve los elementos de la copia guardada después de que finaliza el iterable.
Para usar el módulo itertools
y el método cycle()
, hacemos uso de esta sentencia import
:
from itertools import cycle
Todo lo que tenemos que hacer desde aquí es pasar una lista al método cycle()
, y tenemos una lista enlazada circular. Además, podemos usar una función integrada, next()
, para acceder y devolver el siguiente elemento o nodo del iterador, que es la lista enlazada circular.
from itertools import cycle
numList = ["one", "two", "three", "four", "five"]
circularList = cycle(numList)
print(next(circularList))
print(next(circularList))
Producción :
one
two
Entonces, con el método next()
, podemos avanzar fácilmente el iterador uno por uno en lugar de usar el ciclo for
, que se repite para siempre.
from itertools import cycle
numList = ["one", "two", "three", "four", "five"]
circularList = cycle(numList)
for num in circularList:
print(num)
Producción :
one
two
three
four
five
one
two
three
four
Use generadores
para usar la lista circular en Python
Con los generadores, podemos crear iteraciones y funciones que devuelven un iterador sobre el que podemos iterar. A diferencia de las funciones típicas en las que usamos declaraciones de retorno
, usamos las declaraciones de rendimiento
en generadores
.
A diferencia de las declaraciones return
, la declaración yield
detiene la función, guarda todas sus variables de entorno (o estado) y lleva una después de eso con llamadas posteriores. Además, una función generadora
puede contener una declaración de retorno
y más de una declaración de rendimiento
.
Para crear una lista circular, podemos usar la sentencia yield
para guardar el estado de la función y esperar llamadas sucesivas.
def circular(args):
while True:
for element in args:
yield element
numList = ["one", "two", "three", "four", "five"]
circularList = circular(numList)
print(circularList)
Producción :
<generator object circular at 0x0000018AFFD39A10>
Con la función generadora
llamada circular()
, podemos pasarle un argumento iterable. Se repite para siempre usando la instrucción while True
, pero puede pausar la función para devolver el estado actual (lo que significa el elemento o nodo actual en el que se encuentra) y continuar cuando se haya realizado otra llamada.
Esto nos ayuda a crear una lista circular.
Puede usar el método next()
para recuperar el siguiente elemento dentro de la lista circular.
def circular(args):
while True:
for element in args:
yield element
numList = ["one", "two", "three", "four", "five"]
circularList = circular(numList)
print(next(circularList))
print(next(circularList))
Producción :
one
two
O bucle infinito también.
def circular(args):
while True:
for element in args:
yield element
numList = ["one", "two", "three", "four", "five"]
circularList = circular(numList)
for i in circularList:
print(i)
Producción :
one
two
three
four
five
one
two
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedInArtículo relacionado - Python List
- Convertir un diccionario en una lista en Python
- Eliminar todas las apariciones de un elemento de una lista en Python
- Eliminar duplicados de una lista en Python
- Cómo obtener el promedio de una lista en Python
- ¿Cuál es la diferencia entre los métodos de lista que añaden y amplían
- Cómo convertir una lista en cadena en Python