Python itertools.takewhile() Function



The Python itertools.takewhile() function is used to return elements from an iterable as long as a specified condition remains true. Once the condition evaluates to false, iteration stops immediately.

This function is useful for processing sequences where elements should only be included until a certain threshold is met.

Syntax

Following is the syntax of the Python itertools.takewhile() function −

itertools.takewhile(predicate, iterable)

Parameters

This function accepts the following parameters −

  • predicate: A function that returns True or False for each element.
  • iterable: The input iterable whose elements will be processed.

Return Value

This function returns an iterator that yields elements from the iterable until the predicate function returns False.

Example 1

Following is an example of the Python itertools.takewhile() function. Here, we take numbers from a list until we reach a number greater than or equal to 10 −

import itertools

numbers = [1, 4, 7, 9, 10, 12, 15]
result = itertools.takewhile(lambda x: x < 10, numbers)
for num in result:
   print(num)

Following is the output of the above code −

1
4
7
9

Example 2

Here, we use itertools.takewhile() function to extract elements from a sorted list of temperatures until a temperature of 30 or higher is encountered −

import itertools

temperatures = [22, 24, 27, 29, 30, 32, 35]
result = itertools.takewhile(lambda t: t < 30, temperatures)
for temp in result:
   print(temp)

Output of the above code is as follows −

22
24
27
29

Example 3

Now, we use itertools.takewhile() function to process a list of words, stopping when a word longer than 5 characters is encountered −

import itertools

words = ["apple", "pear", "fig", "banana", "cherry", "grape"]
result = itertools.takewhile(lambda w: len(w) <= 5, words)
for word in result:
   print(word)

The result obtained is as shown below −

apple
pear
fig

Example 4

We can use itertools.takewhile() function to filter stock prices until a significant drop occurs −

import itertools

stock_prices = [100, 105, 110, 115, 90, 80, 70]
result = itertools.takewhile(lambda price: price > 95, stock_prices)
for price in result:
   print(price)

The result produced is as follows −

100
105
110
115
python_modules.htm
Advertisements