zoukankan      html  css  js  c++  java
  • python 之 函数 迭代器

    5.9 迭代器

    5.91 可迭代对象和迭代器对象

    1、什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来

    2、要想了解迭代器到底是什么?必须先了解一个概念,即什么是可迭代的对象? 可迭代的对象:在python中,但凡内置有''iter''方法的对象,都是可迭代的对象

    3、迭代器:迭代取值工具,可迭代的对象执行iter方法得到的返回值就是迭代器对象

    iter_dic=dic.__iter__()
    print(iter_dic.__next__())
    print(iter_dic.__next__())

    4、可迭代的对象vs迭代器对象?

    可迭代的对象:str,list,tuple,dict,set,file (除了数值)
    # str1='hello'
    # list1=[1,2,3]
    # tup1=(1,2,3)
    # dic={'x':1}
    # s1={'a','b','c'}
    # f=open('a.txt','w',encoding='utf-8') 迭代器对象:文件对象本身就是迭代器对象
    1、获取可迭代对象的方式:无须获取,python内置str,list,tuple,dict,set,file都是可迭代对象
    2、特点:
        内置有__iter__方法的都叫可迭代的对象,执行该方法会拿到内置迭代器对象
     
    1、获取迭代器对象的方式:
        执行可迭代对象的__iter__方法,拿到的返回值就是迭代器对象
    2、特点:
        既内置有__iter__方法,又内置有__next__方法
        执行迭代器对象的__iter__得到的仍然是迭代器本身
        执行迭代器对象的__next__得到的迭代器的下一个值
    for item in 可迭代的对象:
                    pass

    5.92 迭代器的优缺点分析

    迭代器的优点: 1、提供了一种可不依赖于索引的取值方式

    l=open('a.txt','r',encoding='utf-8')
    iter_l=l.__iter__()
    while True:
        try:
             print(iter_l.__next__())
         except StopIteration:
             break
    l=[1,2,3,4,4,5,5,6,6,6,6,6,6,6,6,6]
    iter_l=l.__iter__()
    print(iter_l)
    print(iter_l.__next__())

    2 、迭代器更加节省内存

    item=range(0,100000000000000000000000000000000000000000000)
    print(item)

    迭代器的缺点: 1、取值麻烦,只能一个一个取,只能往后取, 2、只能往后取,一次性的,取完就抛出一次StopIteration,无法用len获取长度

    x=[1,2,3]
    iter_x=x.__iter__()
    while True:
         try:
             print(iter_x.__next__())
         except StopIteration:
             break
     print('第二次=================================》')
     iter_x=x.__iter__()
     while True:
         try:
             print(iter_x.__next__())
         except StopIteration:
             break

    5.93 for循环原理分析:

    1、for 循环称之为迭代器循环,in后跟的必须是可迭代的对象 2、for循环会执行in后对象的iter方法,拿到迭代器对象 3、然后调用迭代器对象的next方法,拿到一个返回值赋值给line,执行一次循环体 4、周而复始,直到取值完毕,for循环会检测到异常自动结束循环

    l=open('a.txt','r',encoding='utf-8')
    for line in l: #iter_l=l.__iter__()
         print(line)
    ​
     for item in {'x':1,'y':2}:
         print(item)
  • 相关阅读:
    47-python基础-python3-字符串-常用字符串方法(五)-rjust()-ljust()-center()
    46-python基础-python3-字符串-常用字符串方法(四)-join()-split()
    45-python基础-python3-字符串-常用字符串方法(三)-startswith()-endswith()
    44-python基础-python3-字符串-常用字符串方法(二)-isalpha()-isalnum()-isdigit()-isspace()-istitle()
    43-python基础-python3-字符串-常用字符串方法(一)-upper()-lower()-isupper()-islower()
    42-python基础-python3-字符串-原始字符串
    40-python基础-python3-字典常用方法-setdefault()
    39-python基础-python3-字典常用方法-get()
    38-python基础-python3-检查字典中是否存在键或值
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/mylu/p/11012985.html
Copyright © 2011-2022 走看看