Python for loop start counter initialization
Solution 1
The for index in range(len(list))
loop executes the loop body with index
first set to 0
, then 1
, then 2
, etc. up to len(list) - 1
. The previous value of index
is ignored and overwritten. If you want index
to start at iteration + 1
, use the 2-argument form of range
:
for index in range(iteration + 1, len(list)):
Solution 2
You really should be using enumerate
for stuff like this, as you can loop through the index and the value at the same time (which will save you the hassle of using two for-loops).
for i, j in enumerate(list):
print i, j
Your inner loop is overriding the variable index
that you defined in the first loop.
Solution 3
Try this instead:
for index in range(iteration + 1, len(l)): # don't use "list" as a name
index
is being reassigned anyway within the for
-loop so index = iteration + 1
is not having any effect.
Related videos on Youtube
user2555288
Updated on January 18, 2021Comments
-
user2555288 over 3 years
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)
The above is a code snippet I wrote for selection sort algorithm. However I see the inner loop start counter always starting from 0. Request for expert comment.
-
erdekhayser almost 11 yearsWhen you say
range(15)
(for example), it really saysrange(0,15)
. Using only one argument simplifies it for you (the programmer), but it is really saying the latter. You should simplify it tofor index in range(iteration + 1, len(myList)):
. Also, try not to reuse variable names like you did here. When you sayfor index in...
you reset the value of index you gave it the line before. As I assume you thought, setting index before does not affect its starting vale in thefor
loop. The value of index gets changed to the default value ofrange(oneArg)
:0, and with 2 args, the first value.
-
-
bojangler almost 11 yearsAlso, what arshajii said about the reserved keyword, "list"
-
user2357112 almost 11 years
list
is not a keyword. It's a builtin identifier; reassigning it is valid, but generally a bad idea.