Python para inicialización de contador de inicio de bucle

for iteration in range(len(list) - 1): index = iteration +1 #This is the line which has no effect on the inner loop for index in range(len(list)): if list[iteration] > list[index]: newmin = list[index] newminindex = index if iteration != newminindex : swapnumbers(list,iteration, newminindex) 

Lo anterior es un fragmento de código que escribí para seleccionar el algoritmo de selección. Sin embargo, veo que el contador de inicio del bucle interno siempre comienza a partir de 0. Solicitud de comentarios de expertos.

El bucle for index in range(len(list)) ejecuta el cuerpo del bucle con el index establecido primero en 0 , luego 1 , luego 2 , etc. hasta len(list) - 1 . El valor anterior del index se ignora y se sobrescribe. Si desea que el index comience en la iteration + 1 , use la forma de range de 2 argumentos:

 for index in range(iteration + 1, len(list)): 

Realmente debería usar la enumerate para cosas como esta, ya que puede recorrer el índice y el valor al mismo tiempo (lo que le ahorrará la molestia de usar dos bucles for).

 for i, j in enumerate(list): print i, j 

Su bucle interno está anulando el index variable que definió en el primer bucle.

 for index in range(iteration + 1, len(list)) 

Intenta esto en su lugar:

 for index in range(iteration + 1, len(l)): # don't use "list" as a name 

index se está reasignando de todos modos dentro de for loop, for lo que index = iteration + 1 iteration index = iteration + 1 no está teniendo ningún efecto.