DEV Community

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

Posted on • Edited on

Iterator in Python (4)

Buy Me a Coffee

*Memo:

iter() or __iter__() can create an iterator with an iterable as shown below:

v = iter([0, 1, 2, 3, 4])                       # list
v = [0, 1, 2, 3, 4].__iter__()                  # list
v = iter((0, 1, 2, 3, 4))                       # tuple
v = (0, 1, 2, 3, 4).__iter__()                  # tuple
v = iter({0, 1, 2, 3, 4})                       # set
v = {0, 1, 2, 3, 4}.__iter__()                  # set
v = iter(frozenset([0, 1, 2, 3, 4]))            # frozenset
v = frozenset([0, 1, 2, 3, 4]).__iter__()       # frozenset
v1 = {'name':'John', 'age':36, 'gender':'Male'}
v2 = iter(v1)                                   # dict
v2 = v1.__iter__()                              # dict
v2 = iter(v1.keys())                            # dict.keys()
v2 = v1.keys().__iter__()                       # dict.keys()
v2 = iter(v1.values())                          # dict.values()
v2 = v1.values().__iter__()                     # dict.values()
v2 = iter(v1.items())                           # dict.items()
v2 = v1.items().__iter__()                      # dict.items()
v = iter('Hello')                               # str
v = 'Hello'.__iter__()                          # str
v = iter(b'Hello')                              # bytes
v = b'Hello'.__iter__()                         # bytes
v = iter(bytearray(b'Hello'))                   # bytearray
v = bytearray(b'Hello').__iter__()              # bytearray
v = iter(range(5))                              # range
v = range(5).__iter__()                         # range
# No error

v = iter()
# Error
Enter fullscreen mode Exit fullscreen mode
v1 = [0, 1, 2, 3, 4] # list
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <list_iterator object at 0x0000026906F3C460>

print(type(v2))
# <class 'list_iterator'>

print(*v2)
# 0 1 2 3 4
Enter fullscreen mode Exit fullscreen mode
v1 = (0, 1, 2, 3, 4) # tuple
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <tuple_iterator object at 0x000002821F7695A0>

print(type(v2))
# <class 'tuple_iterator'>

print(*v2)
# 0 1 2 3 4
Enter fullscreen mode Exit fullscreen mode
v1 = {0, 1, 2, 3, 4}            # set
v1 = frozenset({0, 1, 2, 3, 4}) # frozenset
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <set_iterator object at 0x00000282203069C0>

print(type(v2))
# <class 'set_iterator'>

print(*v2)
# 0 1 2 3 4
Enter fullscreen mode Exit fullscreen mode
v1 = {'name': 'John', 'age': 36, 'gender': 'Male'} # dict
v1 = {'name': 'John', 'age': 36, 'gender': 'Male'} # dict.keys()
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <dict_keyiterator object at 0x0000028220423FB0>

print(type(v2))
# <class 'dict_keyiterator'>

print(*v2)
# name age gender
Enter fullscreen mode Exit fullscreen mode
v1 = {'name': 'John', 'age': 36, 'gender': 'Male'}.values() # dict.values()

v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <dict_valueiterator object at 0x00000282204FEE80>

print(type(v2))
# <class 'dict_valueiterator'>

print(*v2)
# John 36 Male
Enter fullscreen mode Exit fullscreen mode
v1 = {'name': 'John', 'age': 36, 'gender': 'Male'}.items() # dict.items()

v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <dict_itemiterator object at 0x00000282202F1670>

print(type(v2))
# <class 'dict_itemiterator'>

print(*v2)
# ('name', 'John') ('age', 36) ('gender', 'Male')
Enter fullscreen mode Exit fullscreen mode
v1 = 'Hello' # str
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <str_ascii_iterator object at 0x0000026906CEA560>

print(type(v2))
# <class 'str_ascii_iterator'>

print(*v2)
# H e l l o
Enter fullscreen mode Exit fullscreen mode
v1 = b'Hello' # bytes
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <bytes_iterator object at 0x0000026B42119F30>

print(type(v2))
# <class 'bytes_iterator'>

print(*v2)
# 72 101 108 108 111
Enter fullscreen mode Exit fullscreen mode
v1 = bytearray(b'Hello') # bytearray
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <bytearray_iterator object at 0x0000026B423CDBA0>

print(type(v2))
# <class 'bytearray_iterator'>

print(*v2)
# 72 101 108 108 111
Enter fullscreen mode Exit fullscreen mode
v1 = range(5) # range
v2 = iter(v1)
v2 = v1.__iter__()

print(v2)
# <range_iterator object at 0x000001F954F52150>

print(type(v2))
# <class 'range_iterator'>

print(*v2)
# 0 1 2 3 4
Enter fullscreen mode Exit fullscreen mode
print(iter())
# TypeError: iter expected at least 1 argument, got 0
Enter fullscreen mode Exit fullscreen mode

Top comments (0)