w3resource

Python: Make an iterator that drops elements from the iterable as soon as a condition is true


6. Drop Until Positive

Write a Python program to make an iterator that drops elements from the iterable as soon as an element is a positive number.

Sample Solution:

Python Code:

import itertools as it
def drop_while(nums):
    return it.dropwhile(lambda x : x < 0, nums)
nums = [-1,-2,-3,4,-10,2,0,5,12]
print("Original list: ",nums)
result = drop_while(nums)
print("Drops elements from the iterable when a positive number arises \n",list(result))
#Alternate solution
def negative_num(x):
    return x < 0
def drop_while(nums):
    return it.dropwhile(negative_num, nums)
nums = [-1,-2,-3,4,-10,2,0,5,12]
print("Original list: ",nums)
result = drop_while(nums)
print("Drops elements from the iterable when a positive number arises \n",list(result))

Sample Output:

Original list:  [-1, -2, -3, 4, -10, 2, 0, 5, 12]
Drops elements from the iterable when a positive number arises 
 [4, -10, 2, 0, 5, 12]
Original list:  [-1, -2, -3, 4, -10, 2, 0, 5, 12]
Drops elements from the iterable when a positive number arises 
 [4, -10, 2, 0, 5, 12]

For more Practice: Solve these Related Problems:

  • Write a Python program to create an iterator that drops elements from an iterable until the first positive number is encountered, then yields the rest.
  • Write a Python program to build an iterator that skips all elements until a condition (element > 0) is met, then applies a transformation to the remaining items.
  • Write a Python program to create an iterator that drops elements until a positive number appears and then stops if a negative appears later.
  • Write a Python program to construct an iterator that ignores elements until the first positive number, then collects elements into groups of two using itertools.

Go to:


Previous: Write a Python program to generate an infinite cycle of elements from an iterable.
Next: Write a Python program to make an iterator that drops elements from the iterable as long as the elements are negative; afterwards, returns every element.

Python Code Editor:


Have another way to solve this solution? Contribute your code (and comments) through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.