zoukankan      html  css  js  c++  java
  • python--可迭代对象、迭代器和生成器

    迭代器

    1.什么是迭代器?

    不依赖于索引的取值方式
    迭代是一个重复的过程,即每一次重复为一次迭代,并且每次迭代的结果都是下一次迭代的初始值

    示例:

    str1 = 'abcde'
    count = 0
    while count<len(str1)
        print(str1[count])
        count+=1
    
    

    2.什么是可迭代对象?什么是迭代器对象?

    #可迭代对象指的是内置有.__iter__方法的对象
    
    'world'.__iter__
    (4,5,6).__iter__
    [1,2,3].__iter__
    {'a':1}.__iter__
    {'a','b'}.__iter__
    open('a.txt').__iter__
    
    #什么是迭代器对象?
    可迭代对象执行obj.__iter__()得到的结果就是迭代器对象
    而迭代器对象指的是即内置有__iter__又内置有__next__方法的对象
    
    #文件类型是迭代器对象
    open('a.txt').__iter__()
    open('a.txt').__next__()
    
    #总结:
    迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象
    

    生成器

    1. 函数中有yield
    2. 生成器内存id变为:例 <generator object Myread at 0x0000005BBF31F728>

    生成器的应用

    #将文件中的一行内容以指定的分隔符,分行打印,不用同时加载整行内容,节省内存
    
    def back (f,splitter):
        str = ''
        while True:
            while splitter in str:
                num = str.index(splitter)
                yield str[:num]
                str = str[num+len(splitter):]
            newread = f.read(100)
            if not newread:
                yield str
                break
            str = str + newread
    
    with open(r'D:untitleda.txt','r') as f:
        for i in back(f,splitter = '|'):
            print(i)
    

  • 相关阅读:
    Android生成自定义二维码
    Android快速实现二维码扫描--Zbar
    设计模式-桥接模式
    设计模式-组合模式
    设计模式-享元模式
    设计模式-适配器模式
    设计模式-装饰者模式
    设计模式-门面(外观)模式
    设计模式-原型模式
    设计模式-单例模式
  • 原文地址:https://www.cnblogs.com/du-z/p/11061235.html
Copyright © 2011-2022 走看看