Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use more than one condition in Python for loop?

Tags:

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?

like image 800
beautCode Avatar asked Jul 27 '11 04:07

beautCode


People also ask

Can you have 2 conditions in a for loop Python?

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.

Can I have 2 conditions in for 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 ','.

How do you use multiple conditions in Python?

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.

How do you write conditions in a for loop in Python?

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.


1 Answers

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.

like image 89
steveha Avatar answered Sep 20 '22 13:09

steveha