You can use a range with a step size of 2:
Python 2
for i in xrange(0,10,2):
print(i)
Python 3
for i in range(0,10,2):
print(i)
Note: Use xrange in Python 2 instead of range because it is more efficient as it generates an iterable object, and not the whole list.
You can use a range with a step size of 2:
Python 2
for i in xrange(0,10,2):
print(i)
Python 3
for i in range(0,10,2):
print(i)
Note: Use xrange in Python 2 instead of range because it is more efficient as it generates an iterable object, and not the whole list.
You can also use this syntax (L[start:stop:step]):
mylist = [1,2,3,4,5,6,7,8,9,10]
for i in mylist[::2]:
print i,
# prints 1 3 5 7 9
for i in mylist[1::2]:
print i,
# prints 2 4 6 8 10
Where the first digit is the starting index (defaults to beginning of list or 0), 2nd is ending slice index (defaults to end of list), and the third digit is the offset or step.
Skip for loop steps in Python like in C++
For loop with custom steps in python - Stack Overflow
Why isn't my loop iterating backwards in python?
Understanding the For Loop
Videos
Hi all,
I am trying to skip values with an if statement in a for loop in Python and I cannot seem to do it.
What I am trying to do in Python is the following in C++:
[in]:
#include <iostream>
using namespace std;
int main()
{
for (int i = 0;i < 10;i++)
{if (i == 3) i++;
cout<<i;}
}
[out]: 012456789.
When I do this in Python, the for loop does not "skip" value 3, it just prints 4 twice instead of 3 and 4.
I can take this to an extreme and say if i=3: i == 20 and weirdly Python distinguishes between the i inside the for loop and the i with the given value 20 which baffles me.
[in]:
for i in range(10):if i == 3: i = i+1 print(i)
[out] :0 1 2 4 4 5 6 7 8 9
Is there any solution for this?
Thank you in advance for the help!
for i in range(0, 10, 2):
print(i)
>>> 0
>>> 2
>>> 4
>>> 6
>>> 8
http://docs.python.org/2/library/functions.html
>>> 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]
First and foremost: Python for loops are not really the same thing as a C for loop. They are For Each loops instead. You iterate over the elements of an iterable. range() generates an iterable sequence of integers, letting you emulate the most common C for loop use case.
However, most of the time you do not want to use range(). You would loop over the list itself:
for elem in reversed(some_list):
# elem is a list value
If you have to have a index, you usually use enumerate() to add it to the loop:
for i, elem in reversed(enumerate(some_list)):
# elem is a list value, i is it's index in the list
For really 'funky' loops, use while or create your own generator function:
def halved_loop(n):
while n > 1:
yield n
n //= 2
for i in halved_loop(10):
print i
to print 10, 5, 2. You can extend that to sequences too:
def halved_loop(sequence):
n = -1
while True:
try:
yield sequence[n]
except IndexError:
return
n *= 2
for elem in halved_loop(['foo', 'bar', 'baz', 'quu', 'spam', 'ham', 'monty', 'python']):
print elem
which prints:
python
monty
spam
foo