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)
    

  • 相关阅读:
    常用知识点集合
    LeetCode 66 Plus One
    LeetCode 88 Merge Sorted Array
    LeetCode 27 Remove Element
    LeetCode 26 Remove Duplicates from Sorted Array
    LeetCode 448 Find All Numbers Disappeared in an Array
    LeetCode 219 Contains Duplicate II
    LeetCode 118 Pascal's Triangle
    LeetCode 119 Pascal's Triangle II
    LeetCode 1 Two Sum
  • 原文地址:https://www.cnblogs.com/du-z/p/11061235.html
Copyright © 2011-2022 走看看