today if you really mean to skip items in sequencethe extended three-limit form of the slice expressionpresented in provides simpler route to the same goal to visit every second character in sfor exampleslice with stride of 'abcdefghijkfor in [:: ]print(cend=' the result is the samebut substantially easier for you to write and for others to read the potential advantage to using range here instead is spaceslicing makes copy of the string in both and xwhile range in and xrange in do not create listfor very large stringsthey may save memory changing listsrange versus comprehensions another common place where you may use the range/len combination with for is in loops that change list as it is being traversed supposefor examplethat you need to add to every item in list (maybe you're giving everyone raise in an employee database listyou can try this with simple for loopbut the result probably won' be exactly what you wantl [ for in lx + [ changes xnot this doesn' quite work--it changes the loop variable xnot the list the reason is somewhat subtle each time through the loopx refers to the next integer already pulled out of the list in the first iterationfor examplex is integer in the next iterationthe loop body sets to different objectinteger but it does not update the list where originally came fromit' piece of memory separate from the list to really change the list as we march across itwe need to use indexes so we can assign an updated value to each position as we go the range/len combination can produce the required indexes for usl [ for in range(len( )) [ + [ while and for loops add one to each item in or [il[