实现了__iter__方法的对象称为可迭代对象,在python中,可迭代对象有字符串、列表、元组、字典、集合、文件等
判断对象是否是可迭代对象
from collections.abc import Iterable
print(isinstance("123", Iterable)) #字符串:True
print(isinstance([1, 2, 3], Iterable)) #列表:True
print(isinstance((1, 2, 3), Iterable)) #元组:True
print(isinstance({"a": 1, "b": 2}, Iterable)) #字典:True
print(isinstance({1, 2, 3}, Iterable)) #集合:True
print(isinstance(open("test.txt", "r"), Iterable)) #文件:True
也可以去源码里查看,比如源码里的list类实现了__iter__方法
实现了__iter__和__next__方法的对象称为迭代器,__iter__返回一个特殊的迭代器对象self,__next__返回下一个可用元素,如果没有元素,会抛出StopIteration异常
class MyNumbers:
def __init__(self):
self.a = 1
def __iter__(self):
return self
def __next__(self):
x = self.a
self.a += 1
return x
my_numbers = MyNumbers()
print(next(my_numbers)) #1
print(next(my_numbers)) #2
print(next(my_numbers)) #3
from collections.abc import Iterator
print(isinstance(my_numbers, Iterator)) #my_numbers对象:True
···
## 特点
+ 迭代器是一个可以记住遍历位置的对象
+ 迭代器对象从集合的第一个元素可以访问,直到所有的元素被访问完结束
+ 迭代器只能往前不能后退
+ 迭代器有两个基本的方法:iter()和next()
原文:https://www.cnblogs.com/my_captain/p/12822120.html