Python iterator.__iter__
用法详解及示例
在Python中,迭代器是一种实现了__iter__
和__next__
方法的对象。迭代器可以用于遍历集合中的元素,像列表、字符串和字典等。__iter__
方法返回迭代器本身,而__next__
方法返回下一个元素。
下面是__iter__
方法的语法:
def __iter__(self):
# 返回自身
return self
接下来,我将给出三个示例来演示如何使用__iter__
方法:
示例1:遍历列表
class ListIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __iter__(self):
# 返回迭代器本身
return self
def __next__(self):
if self.index < len(self.data):
# 返回下一个元素
element = self.data[self.index]
self.index += 1
return element
else:
# 迭代结束时抛出StopIteration异常
raise StopIteration
# 创建列表对象
my_list = [1, 2, 3, 4, 5]
# 创建列表迭代器对象
my_iterator = ListIterator(my_list)
# 遍历列表
for item in my_iterator:
print(item)
示例2:遍历字符串
class StringIterator:
def __init__(self, string):
self.string = string
self.index = 0
def __iter__(self):
# 返回迭代器本身
return self
def __next__(self):
if self.index < len(self.string):
# 返回下一个字符
char = self.string[self.index]
self.index += 1
return char
else:
# 迭代结束时抛出StopIteration异常
raise StopIteration
# 创建字符串对象
my_string = "Hello, World!"
# 创建字符串迭代器对象
my_iterator = StringIterator(my_string)
# 遍历字符串
for char in my_iterator:
print(char)
示例3:遍历字典的键值对
class DictIterator:
def __init__(self, dictionary):
self.dictionary = dictionary
self.keys = list(dictionary.keys())
self.index = 0
def __iter__(self):
# 返回迭代器本身
return self
def __next__(self):
if self.index < len(self.keys):
# 返回下一个键值对
key = self.keys[self.index]
value = self.dictionary[key]
self.index += 1
return key, value
else:
# 迭代结束时抛出StopIteration异常
raise StopIteration
# 创建字典对象
my_dict = {"a": 1, "b": 2, "c": 3}
# 创建字典迭代器对象
my_iterator = DictIterator(my_dict)
# 遍历字典的键值对
for key, value in my_iterator:
print(key, value)
通过以上示例,我们可以看到__iter__
方法的作用是返回迭代器对象本身。这样,我们就可以使用迭代器对象来遍历集合中的元素。