*Memo:
- My post explains an iterator (1).
- My post explains an iterator (2).
- My post explains an iterator (3).
- My post explains an iterator (5).
- My post explains an iterator (6).
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
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
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
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
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
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
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')
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
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
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
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
print(iter())
# TypeError: iter expected at least 1 argument, got 0
Top comments (0)