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)
    

  • 相关阅读:
    网页瀑布流收集
    Docker
    CI/CD/Jenkins
    ckplayer获取播放时长一
    aliplay获取播放时长
    06 intent flag三种属性
    06 Activity隐式跳转
    06 Activity显示跳转
    06 Activity的启动模式 Intent的七大属性的总结
    06 Activity OnNewIntent方法
  • 原文地址:https://www.cnblogs.com/du-z/p/11061235.html
Copyright © 2011-2022 走看看