The `itertools`

module provides iterators that you can use in your projects. One of the commonly used method is `accumulate`

.

```
>>> import itertools
>>> accumulator = itertools.accumulate(range(10))
>>> next(accumulator)
0
>>> next(accumulator)
1
>>> next(accumulator)
3
>>> next(accumulator)
6
>>> next(accumulator)
10
>>> next(accumulator)
15
```

As you can see, it makes “additions” starting from 0, then add 1, then add 2, etc.

This is a fairly simple example. As a more interesting (and a little bit more complicated), let’s take a look at `combinations`

method.

```
>>> list(itertools.combinations(range(3), 2))
[(0, 1), (0, 2), (1, 2)]
```

Of course, you can go as difficult as you want/need.

```
>>> list(itertools.combinations(range(5), 3))
[(0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 2, 3), (0, 2, 4), (0, 3, 4), (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
```

Those are just a couple of examples but there is full documentation at https://docs.python.org/2/library/itertools.html.