iterating through a list with an if statement

65,009

Solution 1

Python gives you loads of options to deal with such a situation. If you have example code we could narrow that down for you.

One option you could look at is the all operator:

>>> all([1,2,3,4])
True
>>> all([1,2,3,False])
False

You could also check for the length of the filtered list:

>>> input = [1,2,3,4]
>>> tested = [i for i in input if i > 2]
>>> len(tested) == len(input)
False

If you are using a for construct you can exit the loop early if you come across negative test:

>>> def test(input):
...     for i in input:
...         if not i > 2:
...             return False
...         do_something_with_i(i)
...     return True

The test function above will return False on the first value that's 2 or lower, for example, while it'll return True only if all values were larger than 2.

Solution 2

Maybe you could try with an for ... else statement.

for item in my_list:
   if not my_condition(item):
      break    # one item didn't complete the condition, get out of this loop
else:
   # here we are if all items respect the condition
   do_the_stuff(my_list)
Share:
65,009
Lance Collins
Author by

Lance Collins

Python and C#. I actually program for fun...

Updated on August 08, 2022

Comments

  • Lance Collins
    Lance Collins almost 2 years

    I have a list that I am looping through with a "for" loop and am running each value in the list through an if statement. My problem is that I am trying to only have the program do something if all the values in the list pass the if statement and if one doesn't pass, I want it to move along to the next value in the list. Currently it is returning a value if a single item in the list passes the if statement. Any ideas to get me pointed in the right direction?