# Itertools in Python3

Itertools is a module in Python, it is used to iterate over data structures that can be stepped over using a for-loop. Such data structures are also known as iterables. This module works as a fast, memory-efficient tool that is used either by themselves or in combination to form iterator algebra.

## Why to use ?

This module incorporates functions that utilize computational resources efficiently. Using this module also tends to enhance the readability and maintainability of the code.

## grouper Recipe

The grouper() function can be found in the Recipes section of the itertools docs. The recipes are an excellent source of inspiration for ways to use itertools to your advantage.

Example

 `# Python code to demonstrate the  ` `# grouper Recipie ` `import` `itertools as it ` ` `  `# defining the grouper function ` `def` `grouper(inputs, n, fillvalue ``=` `None``): ` `    ``iters ``=` `[``iter``(inputs)] ``*` `n ` `    ``return` `it.zip_longest(``*``iters, fillvalue ``=` `fillvalue) ` ` `  `alpha ``=` `[``'g'``, ``'e'``, ``'e'``, ``'k'``, ``'s'``, ``'f'``, ``'o'``, ` `         ``'r'``, ``'g'``, ``'e'``, ``'e'``, ``'k'``, ``'s'``] ` `print``(``list``(grouper(alpha, ``3``))) `

Output :

[(‘g’, ‘e’, ‘e’), (‘k’, ‘s’, ‘f’), (‘o’, ‘r’, ‘g’), (‘e’, ‘e’, ‘k’), (‘s’, None, None)]

## Brute force scenario

Brute force is a straightforward method of solving a problem that relies on sheer computing power and trying every possibility rather than advanced techniques to improve efficiency. There are different Brute force itertools function such as:

• combinations()
• combinations_with_replacement()
• permutations()

### combinations()

The itertools.combinations() function takes two arguments—an iterable inputs and a positive integer n—and produces an iterator over tuples of all combinations of n elements in inputs.

Example

 `# Python code to demonstrate combinations ` `import` `itertools as it ` ` `  `print``(``list``(it.combinations([``1``, ``2``], ``2``))) `

Output :

`[(1, 2)]`

### combinations_with_replacement()

combinations_with_replacement() works just like combinations(), accepting an iterable inputs and a positive integer n, and returns an iterator over n-tuples of elements from inputs. The difference is that combinations_with_replacement() allows elements to be repeated in the tuples it returns.
Example

 `# Python code to demonstrate combinations_with_replacement ` `import` `itertools as it ` ` `  `print``(``list``(it.combinations_with_replacement([``1``, ``2``], ``2``))) `

Output :

`[(1, 1), (1, 2), (2, 2)] `

### permutations()

A permutation is a collection or a combination of objects from a set where the order or the arrangement of the chosen objects does matter. permutations() accepts a single iterable and produces all possible permutations (rearrangements) of its elements.
Example

 `# Python code to demonstrate permutations ` `import` `itertools as it ` ` `  `print``(``list``(it.permutations([``'g'``, ``'e'``, ``'k'``]))) `

Output :

[(‘g’, ‘e’, ‘k’), (‘g’, ‘k’, ‘e’), (‘e’, ‘g’, ‘k’), (‘e’, ‘k’, ‘g’), (‘k’, ‘g’, ‘e’), (‘k’, ‘e’, ‘g’)]

## Flattening A List of Lists

Converting a list of lists (2D), into a list (1D) is called flattening. Flattening a list of lists merges all the sublists into one unified list.
Example

 `# Python code to demonstrate flattening a list of lists ` `import` `itertools as it ` ` `  `list_of_lists ``=` `[[``1``, ``2``], [``3``, ``4``]] ` `chain_object ``=` `it.chain.from_iterable(list_of_lists) ` ` `  `# Return chain object with nested lists separated ` `# Convert to list to flatten ` `flattened_list ``=` `list``(chain_object) ` ` `  `print``(flattened_list) `

Output :

`[1, 2, 3, 4] `

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.