python 迭代器和可迭代对象
时间: 2023-10-12 21:09:18 浏览: 159
Python中的迭代器与迭代对象
Python中,迭代器(iterator)和可迭代对象(iterable)是两个重要的概念。
可迭代对象是指实现了__iter__()方法的对象,该方法返回一个迭代器。例如,列表、元组、字典、集合、字符串等都是可迭代对象。
迭代器是指实现了__next__()方法的对象,该方法返回迭代器的下一个元素。如果没有元素可以迭代,则抛出StopIteration异常。例如,Python中的内置函数range()返回的就是一个迭代器对象。
可以使用for循环遍历可迭代对象,for循环会自动调用可迭代对象的__iter__()方法获取迭代器,然后不断调用迭代器的__next__()方法获取下一个元素,直到StopIteration异常被抛出。
示例代码:
```
# 定义一个可迭代对象
class MyIterable:
def __init__(self):
self.data = [1, 2, 3]
def __iter__(self):
return MyIterator(self.data)
# 定义一个迭代器
class MyIterator:
def __init__(self, data):
self.data = data
self.index = 0
def __next__(self):
if self.index >= len(self.data):
raise StopIteration
value = self.data[self.index]
self.index += 1
return value
# 使用for循环遍历可迭代对象
my_iterable = MyIterable()
for item in my_iterable:
print(item)
```
上述代码中,MyIterable是一个可迭代对象,实现了__iter__()方法返回MyIterator对象。MyIterator是一个迭代器,实现了__next__()方法返回下一个元素。使用for循环遍历可迭代对象时,会自动调用MyIterable的__iter__()方法获取迭代器,然后不断调用MyIterator的__next__()方法获取下一个元素,直到StopIteration异常被抛出。
阅读全文