/ / python para la matriz enumerada en bucle - python

estructura enumerada de pitón para bucle - python

def miniMaxSum(arr):
#
# Write your code here.
#
eArr = enumerate(arr)
maxNum = 0
indexMax = -1;
for a,b in eArr:
if b > maxNum:
maxNum = b
indexMax = a

for index,number in eArr:
print("hello")

¿Por qué no imprime nada? Pongo la parte de saludo de impresión para ver si se repite en el segundo bucle for.

Respuestas

5 para la respuesta № 1

enumerate es un iterador. Los iteradores solo pueden usarse una vez; después de eso, están vacíos.

La solución fácil (e idiomática) es simplemente hacer una nueva enumerate iterador para cada bucle:

def miniMaxSum(arr):
maxNum = 0
indexMax = -1;
for a,b in enumerate(arr):
if b > maxNum:
maxNum = b
indexMax = a

for index,number in enumerate(arr):
print("hello")

Si necesita usar un iterador más de una vez, puede guardarlo en una lista y luego reutilizarlo. Solo cambia esta linea

eArr = enumerate(arr)

… a esto:

eArr = list(enumerate(arr))

En este caso, no hay razón para hacer eso. Solo estaría desperdiciando memoria en la creación de la lista. (En cuanto a la velocidad, probablemente sea un poco más rápido para listas muy pequeñas, pero más lento para las muy grandes, pero probablemente no importe de ninguna manera su código). hay casos en los que es útil, por lo que vale la pena saber cómo hacerlo.