python迭代器

迭代器

  • 迭代器是一个可以记住遍历的位置的对象。
  • 迭代器对象从第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
  • 迭代器有两个基本的方法:iter() 和 next()
  • 字符串,列表或元组对象都可用于创建迭代器:

创建一个迭代器:

  • 把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。
  • __iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过 StopIteration 异常标识迭代的完成。
  • __next__() 方法会返回迭代器下一个元素
复制代码
class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        x = self.a
        self.a += 1
        return x


myclass = MyNumbers()

# 原始方式遍历迭代器
myiter = iter(myclass)  # 生成迭代器

print(next(myiter)) # 获取迭代器元素
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

print("#############################")

# for循环方式遍历迭代器
for i in myclass:
    if i > 10:
        break
    print(i)
复制代码

执行结果:

复制代码
1
2
3
4
5
#############################
1
2
3
4
5
6
7
8
9
10
复制代码

 

posted @   foreast  阅读(59)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示