GZYXY

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  10 随笔 :: 0 文章 :: 0 评论 :: 5873 阅读

如何遍历一个列表

  1. for...in
for number in list(range(10)):
    print(number) # 0 ~ 9

  1. 迭代器
it = iter(list(range(10)))
while True:  
    try:
        print(next(it))  # 0 ~ 9
    except StopIteration:  
        break  

可迭代与迭代器

  1. 只要数据对象能够实现 __iter____getitem__的 方法就是可迭代对象;可迭代对象支持每次返回自己所包含的一个成员对象;可迭代对象都可以用 for...in 来遍历;

  2. listtuplestringdictsetfile 都是可迭代对象;自定义类只要其内部实现 __iter____getitem__的方法,也是可迭代对象;

  1. 当对象调用 __iter____getitem__ 方法就在内存中创建了一个能遍历此对象的每一个元素的迭代器;调用迭代器的next()方法可以遍历其每一个元素;

  2. 迭代器提供了一种访问容器中各个元素的统一接口,即next()方法, 使用next()方法可以依次访问容器中的元素;迭代器是不可逆的,当依次遍历完元素后,会返回Stopiteration

  3. 自定义可迭代对象要想能够生成迭代器,不仅要有实现__iter____getitem__的方法,同时还要定义__next__()的方法,用于使迭代器指向下一个元素;

class Fibs:
    def __init__(self):
        self.a = 0
        self.b = 1

    def __next__(self):
        self.a, self.b = self.b, self.a + self.b
        return self.a
    def __iter__(self):
        return self

    
fib = Fibs()
for f in fib:
    if f > 100:
        print(f) # 144
        break
posted on   GZYXY  阅读(99)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示