Using the finite iterators

The itertools module provides a number of functions that we can use to produce finite sequences of values. We'll look at 10 functions in this module, plus some related built-in functions:

  • enumerate(): This function is actually part of the __builtins__ package, but it works with an iterator and is very similar to other functions in the itertools module.
  • accumulate(): This function returns a sequence of reductions of the input iterable. It's a higher-order function and can do a variety of clever calculations.
  • chain(): This function combines multiple iterables serially.
  • groupby(): This function uses a function to decompose a single iterable into a sequence of iterables over subsets of the input data.
  • zip_longest(): This function combines elements from multiple iterables. The built-in zip() function truncates the sequence at the length of the shortest iterable. The zip_longest() function pads the shorter iterables with the given fill value.
  • compress(): This function filters one iterable based on a second iterable of Boolean values.
  • islice(): This function is the equivalent of a slice of a sequence when applied to an iterable.
  • dropwhile() and takewhile(): Both of these functions use a Boolean function to filter items from an iterable. Unlike filter() or filterfalse(), these functions rely on a single True or False value to change their filter behavior for all subsequent values.
  • filterfalse(): This function applies a filter function to an iterable. This complements the built-in filter() function.
  • starmap(): This function maps a function to an iterable sequence of tuples using each iterable as an *args argument to the given function. The map() function does a similar thing using multiple parallel iterables.

We've grouped these functions into approximate categories. The categories are roughly related to concepts of restructuring an iterable, filtering, and mapping.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset