DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on

itertools in Python (1)

Buy Me a Coffee

*Memos:


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:

*Memos:

  • The 1st argument is start(Optional-Default:0-Type:int, float, complex or bool).
  • The 2nd argument is step(Optional-Default:1-Type:int, float, complex or bool).
from itertools import count

v = count()
v = count(start=0, step=1)

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
Enter fullscreen mode Exit fullscreen mode
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(next(v)) # 3
print(next(v)) # 4
Enter fullscreen mode Exit fullscreen mode
from itertools import count

for x in count():
    if x == 5:
        break
    print(x)
# 0
# 1
# 2
# 3
# 4
Enter fullscreen mode Exit fullscreen mode
from itertools import count

for x in count(start=-5, step=3):
    if x == 10:
        break
    print(x)
# -5
# -2
# 1
# 4
# 7
Enter fullscreen mode Exit fullscreen mode
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
Enter fullscreen mode Exit fullscreen mode
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)
Enter fullscreen mode Exit fullscreen mode
from itertools import count

for x in count(start=5, step=-3):
    if x == -10:
        break
    print(x)
# 5
# 2
# -1
# -4
# -7
Enter fullscreen mode Exit fullscreen mode

cycle() can return the iterator which endlessly repeats the 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 cycle

v = cycle('ABC')
v = cycle(['A', 'B', 'C'])

print(v)
# <itertools.cycle object at 0x0000026906F4EA00>

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
Enter fullscreen mode Exit fullscreen mode
from itertools import cycle

count = 0

for x in cycle('ABC'):
    if count == 8:
        break
    print(x)
    count += 1
# A
# B
# C
# A
# B
# C
# A
# B
Enter fullscreen mode Exit fullscreen mode

repeat() can return the iterator which endlessly or limitedly repeats object as shown below:

*Memos:

  • The 1st argument is object(Required-Type:object).
  • The 2nd argument is times(Optional-Type:int). *If it's set, object is limitedly repeated otherwise object is endlessly 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
Enter fullscreen mode Exit fullscreen mode
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:
Enter fullscreen mode Exit fullscreen mode
from itertools import repeat

for x in repeat(object='Hello', times=3):
    print(x)
# Hello
# Hello
# Hello
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.