How to use more than one condition in Python for loop?
for example in java:
int[] n={1,2,3,4,6,7};
for(int i=0;i<n.length && i<5 ;i++){
//do sth
}
How dose the python for loop do this?
You can write a while loop with the same sort of logic (but in Python, && is spelled and , and || is spelled or ); or you can use a for loop that iterates over a sequence and then add extra logic to break out of the loop.
Multiple variables can be initialized as well as multiple conditions, and propagations can be made in a single 'for' loop by just using a comma ','.
If we want to join two or more conditions in the same if statement, we need a logical operator. There are three possible logical operators in Python: and – Returns True if both statements are true. or – Returns True if at least one of the statements is true.
The Python for statement iterates over the members of a sequence in order, executing the block each time. Contrast the for statement with the ''while'' loop, used when a condition needs to be checked each iteration or to repeat a block of code forever. For example: For loop from 0 to 2, therefore running 3 times.
The Python for
loop does not, itself, have any support for this. You can get the same effect using a break
statement:
n = [1, 2, 3, 4, 6, 7]
for i in n:
if i >= 5:
break
# do something with i
In Python, a for
is really a foreach
that iterates over some "iterator" or some "iterable object". This is even true when you just want to repeat a specific number of times:
for i in range(1, 8):
# do something with i
In Python 2.x, the above for
loop builds a list with the numbers 1 through 7 inclusive, then iterates over the list; in Python 3.x, the above loop gets an "iterator object" that yields up the values 1 through 7 inclusive, one at a time. (The difference is in the range()
function and what it returns. In Python 2.x you can use xrange()
to get an iterator object instead of allocating a list.)
If you already have a list to iterate over, it is good Python to iterate over it directly rather than using a variable i
to index the list. If you still need an index variable you can get it with enumerate()
like so:
n = [3, 5, 10, "cat", "dog", 3.0, 4.0] # list can contain different types
for i, value in enumerate(n):
# we only want to process the first 5 values in this list
if i >= 5:
break
# do something with value
EDIT: An alternate way to solve the above problem would be to use list slicing.
for value in n[:5]:
# do something with value
This works if n
is a list. The for
loop will set value
to successive items from the list, stopping when the list runs out or 5 items have been handled, whichever comes first. It's not an error to request a slice of longer length than the actual list.
If you want to use the above technique but still allow your code to work with iterators, you can use itertools.islice()
:
from itertools import islice
for value in islice(n, 5):
# do something with value
This will work with a list, an iterator, a generator, any sort of iterable.
And, as with list slicing, the for
loop will get up to 5 values and it's not an error to request an islice()
longer than the number of values the iterable actually has.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With