python for increment inner loop

python, python-2.7

Solution

It seems that you want to use step parameter of range function. From documentation:

range(start, stop[, step]) This is a versatile function to create lists containing arithmetic progressions. It is most often used in for loops. The arguments must be plain integers. If the step argument is omitted, it defaults to 1. If the start argument is omitted, it defaults to 0. The full form returns a list of plain integers [start, start + step, start + 2 * step, ...]. If step is positive, the last element is the largest start + i * step less than stop; if step is negative, the last element is the smallest start + i * step greater than stop. step must not be zero (or else ValueError is raised). Example:

 >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 >>> range(0, 30, 5) [0, 5, 10, 15, 20, 25]
 >>> range(0, 10, 3) [0, 3, 6, 9]
 >>> range(0, -10, -1) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
 >>> range(0) []
 >>> range(1, 0) []

In your case to get [0,2,4] you can use:

range(0,6,2)

OR in your case when is a var:

idx = None
for i in range(len(str1)):
    if idx and i < idx:
        continue
    for j in range(len(str2)):
        if str1[i+j] != str2[j]:
            break
    else:
        idx = i+j

Problem

How to increment the outer iterator from the inner loop? To be more precise: ``` for i in range(0,6): print i for j in range(0,5): i = i+2 ``` I am getting ``` 0 1 2 3 4 5 ``` , but I want `0,2,4` Above is the simpilfied idea what I want to acheive. Here is my Java code: ``` str1="ababa" str2="aba" for(int i =0; i < str1.length; i++) for(int j =0; j < str2.length; j++) if str1[i+j]!=str[j] break; if( j ==str2.length -1) i=i+str2.length; ```

Original source