zoukankan      html  css  js  c++  java
  • Python 迭代器

    如何遍历一个列表

    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
  • 相关阅读:
    line-block,white-space,overflow
    JS操作cookie
    C#的位运算
    小常识:变量的修饰符和DEMO
    JS等号的小注释
    关于谷歌浏览器的小常识
    P2568 GCD
    P2522 [HAOI2011]Problem b
    P3455 [POI2007]ZAP-Queries
    P1447 [NOI2010]能量采集
  • 原文地址:https://www.cnblogs.com/gzyxy/p/11814335.html
Copyright © 2011-2022 走看看