ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python快速入门03

2022-02-02 14:32:23  阅读:168  来源: 互联网

标签:__ 03 入门 迭代 Python iter next hobbies 取值


  1. 迭代器就是用来迭代取值的工具,单纯的重复并不是迭代
    while True:
        msg = input('>> ').strip()
        print(msg)
    View Code

     

  2. #!/usr/bin/env python
    # author:lijipeng
    
    hobbies = ['sing','on foot','table tennis']
    
    index = 0
    while index < len(hobbies):
        print(hobbies[index])
        index+=1
    
    
    #①:满足重复
    #②:并且以每次重新赋值后的Index值作为下一次循环的索引进行取值,反复迭代
    #最终可以取尽列表中所有的值
    View Code

     

  3. 上述案例用到的是索引取值,那么对于字典、集合等没有索引的类型怎么取值呢,那么就必须要找到一种不依赖索引来进行迭代取值的方式,这就用到了迭代器。
  4. 可迭代对象:内置有__iter__方法的对象都是可迭代对象,比如字符串,列表、元组、字典、集合、打开的文件
  5. 迭代器对象:调用obj.iter()方法返回的就是一个迭代器对象。
  6. 迭代器对象内置有__iter__和__next__方法的对象。
  7. 执行迭代器对象的.iter()方法得到的仍然是迭代器本身,而执行迭代器.next()方法就会计算出迭代器的下一个值。
  8. 迭代器是Python提供的一种统一的不依赖于索引的迭代取值方式,只要存在多个值,无论是序列类型还是非序列类型都可以按照迭代器的方法取值。
  9. #!/usr/bin/env python
    # author:lijipeng
    
    hobbies = ['sing','on foot','table tennis']
    
    i = iter(hobbies)  # 每次都需要重新获取一个迭代器对象
    while True:
        try:
            print(next(i))
        except StopIteration:  # 捕捉异常,然后终止循环
            break
    
    
    for item in hobbies:
        print(item)
    
    # for循环的工作原理:
    # ①、调用可迭代对象hobbies内置__iter__得到一个迭代器对象
    # ②、调用迭代器对象内置的__next__得到一个值
    # ③、将得到的值赋给item,执行循环体完成一次循环
    # ④、一直到捕捉到StopIteration一场,结束迭代
    View Code

     

  10. 基于索引的迭代取值,所有的迭代状态都保存到了索引中,基于迭代器的迭代取值,所有的迭代状态都保存在了迭代器中
  11. 迭代器优点:为序列和非序列的类型提供了一种统一的迭代取值方式;惰性计算:在需要的时候迭代器对象才会调用内置的__next__来计算出一个值,也就是说就迭代器本身来说,同一时刻在内存中只有一个值,因此可以存放无限大的数据流。对于列表、字典、元组等容器类型,需要把所有的元素都存放在内存中,受内存大小限制,可以存放的值是有限的。
  12. 迭代器的缺点:除非取尽,否则无法获取迭代器的长度;只能取下一个值,迭代器产生后就是重复执行next方法直到值取尽,否则就会停留在某个位置,等待下一次next。
    #!/usr/bin/env python
    # author:lijipeng
    hobbies = ['sing','on foot','table tennis']
    
    i = iter(hobbies)
    while True:
        try:
            print(next(i))
        except StopIteration:
            break
    
    # i1 = iter(hobbies)
    
    # 两个或者多个循环使用同一个迭代器,必然只会有一个循环能取到值
    while True:
        try:
            print(next(i))
        except StopIteration:
            break
    View Code

     

标签:__,03,入门,迭代,Python,iter,next,hobbies,取值
来源: https://www.cnblogs.com/lixiangzhaolei/p/15860296.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有