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))
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))
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