### Python itertools Module

Python `itertools` include various iterators for efficient looping.

• `count(begin [,step])`: from begin, begin+step, begin + 2 * step, ...

```>>> from itertools import *
>>> x = count(10)
>>> for n in x:
... if (n==14): break
... print(n)
...
```
```10
11
12
13
```
• `cycle(iterable)`: iterates through the iterable over and over again
```>>> from itertools import *
>>> x = cycle('01')
>>> j = 1;
>>> for i in x:
... print(i,j)
... j += 1
... if (j == 7):
... break
...
```
```0 1
1 2
0 3
1 4
0 5
1 6
```
• `repeat(i [,n])`: repeat i n times, if n is not specified, repeat i for ever
```>>> from itertools import *
>>> x = repeat(1, 5)
>>> for i in x: print(i)
```
```1
1
1
1
1
```
• `chain(list1[],list2[], ...)`:
```>>> from itertools import *
>>> x = chain('12','654')
>>> for i in x:
>>> print(i)
```
```1
2
6
5
4
```
• `compress(data, selectors)`: Drop data based on selectors
```>>> from itertools import *
>>> x = compress([1,4,6,2,34,9],[True,False,True,True,True,False])
>>> for i in x:
>>> print(i)
```
```1
6
2
34
```
• `dropwhile(...)`: Drop data based on condition
```>>> from itertools import *
>>> data = [1,4,6,2,34,9]
>>> x = dropwhile(lambda x: x<10,data) #drop till the elements >=10
>>> for i in x:
>>> print(i)
```
```34
9
```
• `takewhile(...)`: Save data based on condition
```>>> from itertools import *
>>> data = [1,4,6,2,34,9]
>>> x = takewhile(lambda x: x<10,data) #drop after the elements >=10
>>> for i in x:
>>> print(i)
```
```1
4
6
2
```
• `groupby(iterable[,keyfunc])`:
```>>> from itertools import *
>>> for i, j in groupby('55333--99'):
>>> print (i,list(j))
```
```5 ['5', '5']
3 ['3', '3', '3']
- ['-', '-']
9 ['9', '9']
```
• `filter(contintion,data)`: filter data based on condition
```>>> from itertools import *
>>> data = [2,6,9,3,1,5]
>>> x = filter(lambda x: x%2, data)
>>> for i in x: print (i)
```
```9
3
1
5
```
• `filterfalse(contintion,data)`: filter data based on condition is FALSE
```>>> from itertools import *
>>> data = [2,6,9,3,1,5]
>>> x = filterfalse(lambda x: x%2, data)
>>> for i in x: print (i)
```
```2
6
```
• `islice(data,[start,]stop[,step])`: filter data from start to stop with step
```>>> from itertools import *
>>> data = [2,6,9,3,1,5,10,3,4,6,23]
>>> x = islice(data,3,9,2)
>>> for i in x:
>>> print (i)
```
```3
5
3
```