Iterando sobre índices
En la tarea anterior, proporcionaste un número específico de elementos a la función range()
. Pero, ¿qué pasa si necesitas determinar el número dinámicamente? Aquí es donde la iteración de índices se vuelve esencial.
La iteración de índices es una técnica fundamental en Python que te permite acceder y modificar elementos por sus posiciones dentro de estructuras de datos como listas o arreglos. Es especialmente útil para tareas que necesitan control preciso sobre cada elemento, como actualizar niveles de inventario o gestionar datos de ventas en una tienda de comestibles.
Observa cómo Alex demuestra que iterar sobre índices puede simplificar operaciones en nuestro ejemplo de tienda de comestibles:
Iterar sobre índices es útil cuando necesitas acceder tanto al índice como al valor de cada elemento en una lista. Cuando usamos range()
con len()
, estamos combinando dos funciones para generar una secuencia de números que corresponden a los índices de los elementos de la lista. Este método es particularmente útil en bucles donde necesitas acceder o modificar elementos basados en su posición.
Por ejemplo, este bucle for
accede al índice y al valor de cada elemento en la grocery_list
:
# List of grocery items grocery_list = ["Apples", "Bananas", "Carrots", "Cucumbers"] # Initialize a for loop to iterate over indexes for item in range(len(grocery_list)): print("Index:", item) print("Item:", grocery_list[item]) print("----") # Printing a divider line for clarity
Aplicación de Ejemplo
Para aplicar un descuento a una lista de precios, necesitamos modificar los elementos de la lista directamente. Usar un bucle simple como for cost in prices:
solo nos daría una copia de cada elemento, no una referencia al elemento real en la lista. Las modificaciones hechas de esta manera no afectarían a la lista original.
Para asegurarnos de actualizar directamente cada elemento en la lista prices
, usamos range(len(prices))
para iterar sobre los índices. Esto nos permite aplicar un factor de descuento a cada elemento:
# List of original prices of grocery items prices = [1.50, 2.00, 0.75, 3.25] # Discount factor (10% off each item) discount_factor = 0.10 # Iterate over the list of prices using range(len()) for cost in range(len(prices)): # Apply the discount by reducing the price prices[cost] -= prices[cost] * discount_factor print(f"New price of item {cost + 1}: ${prices[cost]}") print("Updated prices:", prices)
Nota
La fórmula
prices[cost] -= prices[cost] * discount_factor
es equivalente aprices[cost] = prices[cost] - prices[cost] * discount_factor
. Esto resta una porción del precio original (determinada por el descuento) de sí mismo, aplicando efectivamente el descuento.El
cost + 1
en la declaración print ajusta el índice para que parezca comenzar desde1
en lugar de0
, haciéndolo más amigable para el usuario.
Este método asegura que la lista original prices
sea actualizada directamente con los nuevos precios con descuento, reflejando los cambios inmediatamente en todo el programa donde se use la lista prices
.
Swipe to start coding
En esta tarea, trabajarás con listas que representan cantidades de stock y envíos para actualizar los niveles de inventario. Usarás la iteración de índices para actualizar eficientemente las cantidades de stock basándote en los datos de envío recibidos.
Instrucciones de Código
- Se te proporcionan dos listas:
stock_items
yshipment_received
. Cada lista anidada dentro de estas listas contiene un nombre de producto y su cantidad. - Usa un bucle
for
combinado con las funcionesrange()
ylen()
para iterar sobre la listastock_items
por índice. - Para cada producto, actualiza la cantidad de stock sumando la cantidad correspondiente de la lista
shipment_received
.
Requisitos de Salida
- Para cada producto, imprime un mensaje en el formato:
Stock updated for <product_name>: <updated_quantity> units
. - Después de actualizar todos los productos, imprime las cantidades finales de stock con el mensaje:
Final stock quantities:
. - Muestra la lista actualizada
stock_items
en el formato:Stock Items: <stock_items>
.
Solución
¡Gracias por tus comentarios!