• 迭代器


    迭代器

    1、迭代器是访问集合元素的一种方式;是可以记住遍历位置的对象;
    2、迭代对象从集合的第一个元素开始访问,直到所有的元素被访问结束;迭代器只能往前不能往后推
    3、迭代器的两种方法:iter()和next()

    #字符串、列表或元组对象都可以创建迭代器
    l = range(5)
    it = iter(l)  #创建迭代对象
    print(next(it))  #返回:0
    print(next(it))  #返回:1
    print(next(it))  #返回:2
    print(next(it))  #返回:3
    print(next(it))   #返回:4
    print(next(it))   #报错:StopIteration
    #迭代对象用for循环遍历
    l1 = range(5,11)
    it1 = iter(l1)   #创建迭代对象
    for i in it1:
        print(i,end = " ")
    
    #执行代码返回:5 6 7 8 9 10

    #使用next()函数

    mport sys #引入sys模块
    l3 = range(11,16)
    it3 = iter(l3)
    
    while True:
        try:
            print(next(it3))  #创建迭代对象
        except StopIteration:
            sys.exit()

    #执行返回:

    11
    12
    13
    14
    15

    
    
    创建一个迭代器
    把类作为一个迭代器使用,需要在勒种实现两个方法__iter__()与__next__()
    class MyNumber:
        def __iter__(self):
            self.a = 1
            return self
    
        def __next__(self):
            x = self.a
            self.a += 1
            return x
    
    myclass = MyNumber()
    myiter = iter(myclass)
    print(next(myiter))
    print(next(myiter))
    print(next(myiter))
    
    #执行代码
    #1
    #2
    #3
    StopIteration 异常用于标识迭代的完成,防止出现无限循环;
    在__next()__方法中可设置完成循环的次数后,出发异常来结束循环
    class MyNumber1():
        def __iter__(self):
            self.a = 1
            return self
    
        def __next__(self):
            if self.a <= 10:
                x = self.a
                self.a += 1
                return x
            else:
                raise StopIteration
    
    myclass1 = MyNumber1()
    myiter1 = myclass1
    for i in myiter1:
        print(i)





  • 相关阅读:
    Ext checkbox
    Ext4.1 grid 多选(可无checkbox)
    System.Web.HttpContext.Current.Session获取值出错
    Ext4.1 tree grid的右键菜单
    javascript innerHTML、outerHTML、innerText、outerText的区别
    EXT ajax简单实例
    C# 各版本更新简介
    C#与.Net Framework的各种版本和联系
    Ext4 简单的treepanel
    Ext4.1 Grid 分页查询
  • 原文地址:https://www.cnblogs.com/ff-gaofeng/p/11483831.html
Copyright © 2020-2023  润新知