Requisito previo: Iteradores en Python A continuación, se muestran diferentes formas de usar los iteradores.
Enfoque de estilo C: este enfoque requiere un conocimiento previo del número total de iteraciones.
Python
# A C-style way of accessing list elements cars = ["Aston", "Audi", "McLaren"] i = 0 while (i < len(cars)): print cars[i] i += 1
Producción:
Aston Audi McLaren
Puntos importantes:
- Los programadores de Python rara vez utilizan este estilo de bucle.
- Este enfoque de 4 pasos no crea compacidad con la construcción de bucle de vista única.
- Esto también es propenso a errores en programas o diseños a gran escala.
- No hay ciclo C-Style for en Python, es decir, un ciclo como for (int i=0; i<n; i++)
Uso del estilo for-in (o para cada uno ): este estilo se usa en python que contiene un iterador de listas, diccionario, n arrays dimensionales, etc. El iterador obtiene cada componente e imprime datos mientras se repite. El iterador se incrementa/decrementa automáticamente en esta construcción.
Python
# Accessing items using for-in loop cars = ["Aston", "Audi", "McLaren"] for x in cars: print x
Producción:
Aston Audi McLaren
Consulte esto para obtener más ejemplos de diferentes tipos de datos. Indexación usando la función Range: También podemos usar la indexación usando range() en Python.
Python
# Accessing items using indexes and for-in cars = ["Aston", "Audi", "McLaren"] for i in range(len(cars)): print cars[i]
Producción:
Aston Audi McLaren
Enumerar: Enumerar es una función incorporada de Python que toma la entrada como iterador, lista, etc. y devuelve una tupla que contiene índice y datos en ese índice en la secuencia del iterador. Por ejemplo, enumerate(cars), devuelve un iterador que devolverá (0, cars[0]), (1, cars[1]), (2, cars[2]), y así sucesivamente.
Python
# Accessing items using enumerate() cars = ["Aston" , "Audi", "McLaren "] for i, x in enumerate(cars): print (x)
Producción :
Aston Audi McLaren
La siguiente solución también funciona.
Python
# Accessing items and indexes enumerate() cars = ["Aston" , "Audi", "McLaren "] for x in enumerate(cars): print (x[0], x[1])
Producción :
(0, 'Aston') (1, 'Audi') (2, 'McLaren ')
También podemos imprimir directamente el valor devuelto de enumerate() para ver qué devuelve.
Python
# Printing return value of enumerate() cars = ["Aston" , "Audi", "McLaren "] print enumerate(cars)
Producción :
[(0, 'Aston'), (1, 'Audi'), (2, 'McLaren ')]
Enumerate toma el inicio del parámetro, que se establece de forma predeterminada en cero. Podemos cambiar este parámetro a cualquier valor que queramos. En el siguiente código hemos utilizado start as 1.
Python
# demonstrating the use of start in enumerate cars = ["Aston" , "Audi", "McLaren "] for x in enumerate(cars, start=1): print (x[0], x[1])
Producción :
(1, 'Aston') (2, 'Audi') (3, 'McLaren ')
enumerate() ayuda a integrar la solución para acceder a cada elemento de datos en el iterador y obtener el índice de cada elemento de datos.
Extensiones de bucle: i) Dos iteradores para una sola construcción de bucle: en este caso, se usará una lista y un diccionario para cada iteración en un solo bloque de bucle usando la función de enumeración. Veamos ejemplo.
Python
# Two separate lists cars = ["Aston", "Audi", "McLaren"] accessories = ["GPS kit", "Car repair-tool kit"] # Single dictionary holds prices of cars and # its accessories. # First three items store prices of cars and # next two items store prices of accessories. prices = {1:"570000$", 2:"68000$", 3:"450000$", 4:"8900$", 5:"4500$"} # Printing prices of cars for index, c in enumerate(cars, start=1): print "Car: %s Price: %s"%(c, prices[index]) # Printing prices of accessories for index, a in enumerate(accessories,start=1): print ("Accessory: %s Price: %s"\ %(a,prices[index+len(cars)]))
Producción:
Car: Aston Price: 570000$ Car: Audi Price: 68000$ Car: McLaren Price: 450000$ Accessory: GPS kit Price: 8900$ Accessory: Car repair-tool kit Price: 4500$
ii) función zip (ambos iteradores se utilizarán en una sola construcción de bucle): esta función es útil para combinar elementos de datos de iteradores de tipo similar (lista-lista o dict-dict, etc.) en la i-ésima posición. Utiliza la longitud más corta de estos iteradores de entrada. Se omiten otros elementos de iteradores de mayor longitud. En caso de iteradores vacíos, devuelve Sin salida.
Por ejemplo, el uso de zip para dos listas (iteradores) ayudó a combinar un solo automóvil y su accesorio requerido.
Python
# Python program to demonstrate the working of zip # Two separate lists cars = ["Aston", "Audi", "McLaren"] accessories = ["GPS", "Car Repair Kit", "Dolby sound kit"] # Combining lists and printing for c, a in zip(cars, accessories): print "Car: %s, Accessory required: %s"\ %(c, a)
Producción:
Car: Aston, Accessory required: GPS Car: Audi, Accessory required: Car Repair Kit Car: McLaren, Accessory required: Dolby sound kit
El reverso de estos iteradores de la función zip se conoce como descomprimir usando el operador «*». El uso de la función enumerar y la función zip ayuda a lograr una extensión efectiva de la lógica de iteración en python y resuelve muchos más subproblemas de una gran tarea o problema.
Python
# Python program to demonstrate unzip (reverse # of zip)using * with zip function # Unzip lists l1,l2 = zip(*[('Aston', 'GPS'), ('Audi', 'Car Repair'), ('McLaren', 'Dolby sound kit') ]) # Printing unzipped lists print(l1) print(l2)
Producción:
('Aston', 'Audi', 'McLaren') ('GPS', 'Car Repair', 'Dolby sound kit')
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA