*Memo:
- 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 pairwise(), starmap(), tee() and zip_longest().
- My post explains itertools about product() and permutations().
- My post explains itertools about combinations() and combinations_with_replacement().
- My post explains an iterator (1).
itertools has the functions to create iterators.
*more-itertools has more functions by installing with pip install more-itertools
.
count() can return the iterator which endlessly generates a number one by one as shown below:
*Memo:
- The 1st argument is
start
(Optional-Default:0
-Type:int
,float
,complex
orbool
):- It's a start number.
- The 2nd argument is
step
(Optional-Default:1
-Type:int
,float
,complex
orbool
):- It's the interval of numbers.
from itertools import count
v = count()
v = count(start=0, step=1)
print(v)
# count(0)
print(type(v))
# <class 'itertools.count'>
print(next(v)) # 0
print(next(v)) # 1
print(next(v)) # 2
print(next(v)) # 3
print(next(v)) # 4
from itertools import count
v = count()
print(v) # count(0)
print(v) # count(0)
print(next(v)) # 0
print(v) # count(1)
print(v) # count(1)
print(next(v)) # 1
print(next(v)) # 2
print(v) # count(3)
print(v) # count(3)
print(next(v)) # 3
print(next(v)) # 4
print(v) # count(5)
print(v) # count(5)
from itertools import count
for x in count():
if x == 5:
break
print(x)
# 0
# 1
# 2
# 3
# 4
from itertools import count
for x in count(start=-5, step=3):
if x == 10:
break
print(x)
# -5
# -2
# 1
# 4
# 7
from itertools import count
for x in count(start=-5.0, step=3.0):
if x == 10:
break
print(x)
# -5.0
# -2.0
# 1.0
# 4.0
# 7.0
from itertools import count
for x in count(start=-5.0+0.0j, step=3.0+0.0j):
if x == 10:
break
print(x)
# (-5+0j)
# (-2+0j)
# (1+0j)
# (4+0j)
# (7+0j)
from itertools import count
for x in count(start=5, step=-3):
if x == -10:
break
print(x)
# 5
# 2
# -1
# -4
# -7
cycle() can return the iterator which endlessly repeats the elements of iterable
one by one as shown below:
*Memo:
- The 1st argument is
iterable
(Required-Type:Iterable):- Don't use
iterable=
.
- Don't use
from itertools import cycle
v = cycle('')
v = cycle([])
print(v)
# <itertools.cycle object at 0x0000027EC02BBB40>
print(next(v))
# StopIteration:
from itertools import cycle
v = cycle('ABC')
v = cycle(['A', 'B', 'C'])
print(next(v)) # A
print(next(v)) # B
print(next(v)) # C
print(next(v)) # A
print(next(v)) # B
print(next(v)) # C
print(next(v)) # A
print(next(v)) # B
from itertools import cycle
count = 0
for x in cycle('ABC'):
# for x in cycle(['A', 'B', 'C']):
if count == 8:
break
print(x)
count += 1
# A
# B
# C
# A
# B
# C
# A
# B
repeat() can return the iterator which endlessly or limitedly repeats object
as shown below:
*Memo:
- The 1st argument is
object
(Required-Type:Any). - The 2nd argument is
times
(Optional-Type:int
):- If it's not set, the iterator is endlessly repeated otherwise limitedly repeated.
from itertools import repeat
v = repeat(object='Hello')
print(v)
# repeat('Hello')
print(type(v))
# <class 'itertools.repeat'>
print(next(v)) # Hello
print(next(v)) # Hello
print(next(v)) # Hello
print(next(v)) # Hello
print(next(v)) # Hello
from itertools import repeat
v = repeat(object='Hello', times=3)
print(next(v)) # Hello
print(next(v)) # Hello
print(next(v)) # Hello
print(next(v)) # StopIteration:
from itertools import repeat
for x in repeat(object='Hello', times=3):
print(x)
# Hello
# Hello
# Hello
from itertools import repeat
v = repeat(object=['H', 'e', 'l', 'l', 'o'])
print(v)
# repeat(['H', 'e', 'l', 'l', 'o'])
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
from itertools import repeat
v = repeat(object=['H', 'e', 'l', 'l', 'o'], times=3)
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
print(next(v)) # ['H', 'e', 'l', 'l', 'o']
print(next(v)) # StopIteration:
from itertools import repeat
for x in repeat(object=['H', 'e', 'l', 'l', 'o'], times=3):
print(x)
# ['H', 'e', 'l', 'l', 'o']
# ['H', 'e', 'l', 'l', 'o']
# ['H', 'e', 'l', 'l', 'o']
Top comments (0)