*Memos:
- My post explains itertools about count(), cycle() and repeat().
- My post explains itertools about accumulate(), batched(), chain() and chain.from_iterable().
- My post explains itertools about compress(), filterfalse(), takewhile() and dropwhile().
- My post explains itertools about groupby() and islice().
- My post explains itertools about product() and permutations().
- My post explains itertools about combinations() and combinations_with_replacement().
itertools has the functions to create iterators.
*more-itertools has more functions by installing with pip install more-itertools
.
pairwise() can return the iterator which returns a tuple of the two elements of iterable
one by one as shown below:
*Memos:
- The 1st argument is
iterable
(Required-Type:iterable
). - Don't use
iterable=
.
from itertools import pairwise
v = pairwise('ABCD')
v = pairwise(['A', 'B', 'C', 'D'])
print(v)
# <itertools.pairwise object at 0x000001BE9A1ABF70>
print(next(v)) # ('A', 'B')
print(next(v)) # ('B', 'C')
print(next(v)) # ('C', 'D')
print(next(v)) # StopIteration:
from itertools import pairwise
for x in pairwise('ABCD'):
print(x)
# ('A', 'B')
# ('B', 'C')
# ('C', 'D')
starmap() can return the iterator which does function
with the zero or more elements of iterable
one by one to return the result one by one as shown below:
*Memos:
- The 1st argument is
function
(Required-Type:callable
). *Don't usefunction=
. - The 2nd argument is
iterable
(Required-Type:iterable
). *Don't useiterable=
.
from itertools import starmap
x = starmap(lambda: None, [])
print(x)
# <itertools.starmap object at 0x000001BE9A289CF0>
print(next(x)) # StopIteration:
from itertools import starmap
from operator import add
x = starmap(lambda a, b: a+b, [(2, 5), (3, 2), (10, 3)])
x = starmap(add, [(2, 5), (3, 2), (10, 3)])
print(next(x)) # 7
print(next(x)) # 5
print(next(x)) # 13
print(next(x)) # StopIteration:
from itertools import starmap
from operator import add
for x in starmap(lambda a, b: a+b, [(2, 5), (3, 2), (10, 3)]):
print(x)
# 7
# 5
# 13
from itertools import starmap
from operator import mul
for x in starmap(lambda a, b: a*b, [(2, 5), (3, 2), (10, 3)]):
# for x in starmap(mul, [(2, 5), (3, 2), (10, 3)]):
print(x)
# 10
# 6
# 30
from itertools import starmap
for x in starmap(lambda a, b: a**b, [(2, 5), (3, 2), (10, 3)]):
# for x in starmap(pow, [(2, 5), (3, 2), (10, 3)]):
print(x)
# 32
# 9
# 1000
tee() can return the zero or more iterators in a tuple which create the zero or more copies of iterable
to return the element one by one as shown below:
*Memos:
- The 1st argument is
iterable
(Required-Type:iterable
). *Don't useiterable=
. - The 2nd argument is
n
(Optional-Default:2
-Type:int
): *Memos:- It's the number of the copies of
iterable
. - It must be
0 <= x
. - Don't use
n=
.
- It's the number of the copies of
from itertools import tee
v = tee('ABC')
v = tee('ABC', 2)
v = tee(['A', 'B', 'C'])
v = tee(['A', 'B', 'C'], 2)
print(v)
# (<itertools._tee object at 0x000001BE99D6E3C0>,
# <itertools._tee object at 0x000001BE99F85440>)
print(next(v[0])) # A
print(next(v[0])) # B
print(next(v[0])) # C
print(next(v[1])) # A
print(next(v[1])) # B
print(next(v[1])) # C
print(next(v[0]))
print(next(v[1]))
# StopIteration:
from itertools import tee
for x in tee('ABC'):
for y in x:
print(y)
# A
# B
# C
# A
# B
# C
from itertools import tee
for x in tee('ABC', 3):
for y in x:
print(y)
# A
# B
# C
# A
# B
# C
# A
# B
# C
zip_longest() can return the iterator which creates and returns a tuple of one or more elements one by one by zipping *iterables
as shown below:
*Memos:
- The 1st or the later arguments are
*iterables
(Optional-Type:iterable
). *Don't use any keywords like*iterables=
,iterables=
,*iterable=
,iterable=
, etc. - The 2nd argument is
fillvalue
(Optional-Default:None
-Type:object
): *Memos:- It's the value to fill the zero or more missing elements of a returned tuple.
-
fillvalue=
must be used.
from itertools import zip_longest
v = zip_longest()
v = zip_longest(fillvalue=None)
print(v)
# <itertools.zip_longest object at 0x000001BE99F29FD0>
print(next(v)) # StopIteration:
from itertools import zip_longest
v = zip_longest('ABC')
v = zip_longest('ABC', fillvalue=None)
v = zip_longest(['A', 'B', 'C'])
v = zip_longest(['A', 'B', 'C'], fillvalue=None)
print(next(v)) # ('A',)
print(next(v)) # ('B',)
print(next(v)) # ('C',)
print(next(v)) # StopIteration:
from itertools import zip_longest
v = zip_longest('ABC', 'vwxyz', fillvalue=None)
print(next(v)) # ('A', 'v')
print(next(v)) # ('B', 'w')
print(next(v)) # ('C', 'x')
print(next(v)) # (None, 'y')
print(next(v)) # (None, 'z')
print(next(v)) # StopIteration:
from itertools import zip_longest
v = zip_longest('ABC', 'vwxyz', [10, 20], fillvalue='Abscent')
print(next(v)) # ('A', 'v', 10)
print(next(v)) # ('B', 'w', 20)
print(next(v)) # ('C', 'x', 'Abscent')
print(next(v)) # ('Abscent', 'y', 'Abscent')
print(next(v)) # ('Abscent', 'z', 'Abscent')
print(next(v)) # StopIteration:
from itertools import zip_longest
for x in zip_longest('ABC', 'vwxyz', [10, 20], fillvalue='Abscent'):
print(x)
# ('A', 'v', 10)
# ('B', 'w', 20)
# ('C', 'x', 'Abscent')
# ('Abscent', 'y', 'Abscent')
# ('Abscent', 'z', 'Abscent')
from itertools import zip_longest
for x in zip_longest('ABC', 'vwxyz', [10, 20], fillvalue='Abscent'):
for y in x:
print(y)
# A
# v
# 10
# B
# w
# 20
# C
# x
# Abscent
# Abscent
# y
# Abscent
# Abscent
# z
# Abscent
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.