Python | Iteración cíclica específica del índice en la lista

El problema de la iteración cíclica es bastante común, pero a veces nos encontramos con el problema en el que requerimos procesar la lista de una manera en la que también se itera cíclicamente a partir de un índice específico. Analicemos ciertas formas en que se puede resolver este problema.

Método n.º 1: Usar % operador + bucle
El operador % se puede usar para hacer circular el valor del índice fuera de límite para comenzar desde el principio de la lista para formar un ciclo y, por lo tanto, ayudar en la iteración cíclica.

# Python3 code to demonstrate 
# cyclic iteration in list 
# using % operator and loop
  
# initializing tuple list 
test_list = [5, 4, 2, 3, 7]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# starting index 
K = 3
  
# using % operator and loop
# cyclic iteration in list 
res = []
for i in range(len(test_list)):
    res.append(test_list[K % len(test_list)])
    K = K + 1
  
# printing result 
print ("The cycled list is : " +  str(res))
Producción:

The original list is : [5, 4, 2, 3, 7]
The cycled list is : [3, 7, 5, 4, 2]

 
Método n.º 2: usaritertools.cycle() + itertools.islice() + itertools.dropwhile()
la biblioteca itertools tiene funciones integradas que pueden ayudar a lograr la solución de este problema en particular. La función de ciclo realiza la parte cíclica, la función dropwhile trae el ciclo al comienzo de la lista y la función islice especifica el tamaño del ciclo.

# Python3 code to demonstrate 
# cyclic iteration in list using itertools
from itertools import cycle, islice, dropwhile
  
# initializing tuple list 
test_list = [5, 4, 2, 3, 7]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# starting index 
K = 3
  
# using itertools methods for
# cyclic iteration in list 
cycling = cycle(test_list)  
skipping = dropwhile(lambda x: x != K, cycling) 
slicing = islice(skipping, None, len(test_list))
slicing = list(slicing)
  
# printing result 
print ("The cycled list is : " +  str(slicing))
Producción:

The original list is : [5, 4, 2, 3, 7]
The cycled list is : [3, 7, 5, 4, 2]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *