• python之迭代器


    1. 可迭代对象是什么?

    字面意思:可以重复迭代的工具。

    专业角度: 内部含有'__iter__'并且含有"__next__"方法的对象,就是迭代器

    2. 可迭代对象如何转化成迭代器

    li = [1, 2, 3, 4, 5
    obj = iter(li) # 转换方法 # iter是一个内置函数
    print(obj)
    
    # 输出结果
    <list_iterator object at 0x10fa7d4a8> # 这个就是一个迭代器
    

    3. 迭代器可以利用next()进行迭代取值

    li = [1, 2, 3, 4, 5]
    obj = iter(li)
    print(obj)
    print(next(obj))
    print(next(obj))
    print(next(obj))
    print(next(obj))
    print(next(obj)) # 每执行一次print(next(obj)) 就取一个值,取到最后再去取值的时候取不到了就会报错
    

    4. 迭代器的优缺点和特性

    迭代器优点:
    1. 非常节省内存。
    2. 惰性机制。
    迭代器缺点:
    1. 不直观。
    2. 操作不灵活。
    3. 效率相对低。
    特性:

    next执行会停止在最后执行的值的后面,下次执行会继续往后取值

    l1 = [22, 33, 44, 55, 66, 77]
    obj = iter(l1)
    
    for i in range(3):
        print(next(obj))
    
    # 输出结果
    22
    33
    44
    
    for i in range(2):
        print(next(obj))
    # 输出结果
    55	# 上次执行完毕后,就停止在上次那个位置后面,再次执行继续往下走
    66
    

    5.利用while循环,模拟for循环内部循环可迭代对象的机制

    li = [1, 2, 3, 4, 5]
    # 1,先要将一个可迭代对象转换成一个迭代器
    obj = iter(li)
    while 1:
    	try: # 2,然后使用调试模式
    		print(next(obj)) # 3,接着使用netx开始一个一个取值
    	except StopIteration: # 4,因为迭代器的特性,取值完毕后取不到会报错,所以如果遇到该StopIteration报错就退出循环
    		break
    
    # 输出结果
    1
    2
    3
    4
    5
    

    利用while循环,模拟for循环内部循环可迭代对象的机制。

    1. 先要将可迭代对象转化成迭代器。
    2. 利用next对迭代器进行取值。
    3. 利用异常处理try一下防止报错。

    6. 可迭代对象与迭代器的对比

    可迭代对象:

    ​ 可迭代对象是一个操作比较灵活,直观,效率相对高,但是比较占用内存的数据集。

    迭代器:

    ​ 迭代器是一个非常节省内存,满足惰性机制,但是效率相对低,操作不灵活的数据集。

  • 相关阅读:
    Buffer Lock Mode and Compatibilities
    11g默认审计选项
    11.2.0.2 asmcmd lsdg show incorrect diskgroup number
    关于V$OPEN_CURSOR
    了解你所不知道的SMON功能(七):清理IND$字典基表
    PL/SQL DEPENDENCIES
    温习 Linux 命令
    温习 SQL 03
    PL/SQL 基础 ( 下 )
    HTML501 ( The.Essential.Guide )
  • 原文地址:https://www.cnblogs.com/zanao/p/11054842.html
Copyright © 2020-2023  润新知