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)
    

  • 相关阅读:
    透视校正插值
    投影矩阵推导
    编程思想-小即是美
    Win10使用小技巧
    TotalCommander 之 快捷键
    TotalCommander 之 配置
    TotalCommander 之 日常使用技巧
    上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。不笑不足以为道。
    《诫子书》
    青春不是年华,而是心境
  • 原文地址:https://www.cnblogs.com/du-z/p/11061235.html
Copyright © 2011-2022 走看看