迭代器有两个基本的方法:iter() 和 next()。
#!/usr/bin/python3
import sys # 引入 sys 模块
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
while True:
try:
print (next(it)) # 输出迭代器的下一个元素
except StopIteration:
sys.exit()
把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。
class MyNumbers:
def __iter__(self): # __iter__() 方法返回一个特殊的迭代器对象
self.a = 1
return self
def __next__(self): # __next__() 方法(Python 2 里是 next())会返回下一个迭代器对象
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
class MyNumbers:
def __iter__(self): # __iter__() 方法返回一个特殊的迭代器对象
self.a = 1
return self
def __next__(self): # __next__() 方法(Python 2 里是 next())会返回下一个迭代器对象
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration # StopIteration 异常用于标识迭代的完成,设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
#!/usr/bin/python3
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a # yield 的函数被称为生成器(generator)
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统: 安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:216.73.216.110,2025-12-01 16:06:47,Processed in 0.01261 second(s).