迭代器

  迭代是Python最强大的功能之一,是访问集合元素的一种方式。
  迭代器是一个可以记住遍历的位置的对象。
  迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。
  迭代器只能往前不会后退。
  迭代器有两个基本的方法:iter() 和 next()。

  1. 字符串、列表或元祖对象都可用于创建迭代器:

     list = [1,2,3,4]
    it = iter(list) #创建迭代器对象
    print(next(it)) #输出迭代器的下一个元素 1
    print(next(it)) #
    print(next(it)) #
    print(next(it)) #
  2. 迭代器对象可以使用常规for语句进行遍历:
     list = [1,2,3,4]
    it = iter(list) #创建迭代器
    for x in it:
    print(x,end=' ') #1 2 3 4
  3. 也可以使用next()函数:

     import sys
    
     list = [1,2,3,4]
    it = iter(list) #创建迭代器对象 while True:
    try:
    print(next(it),end=' ')
    except StopIteration:
    sys.exit()
    # 1 2 3 4

生成器

  在python中,使用了yield的函数被称为生成器(generator)。
  跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单的理解:生成器就是迭代器。
  在调用生成器运行的过程中,每次遇到yield时,函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时,从当前位置继续执行。
  调用一个生成器函数,返回的是一个迭代器对象。  

  1. 字符串、列表或元祖对象都可用于创建迭代器:

     import sys
    
     def fibonacci(n):       #生成器函数--斐波那契
    a,b,counter = 0,1,0
    while True:
    if (counter > n):
    return #作用:如果计数大于n,则结束while循环
    yield a
    a,b = b,a+b
    counter += 1 f = fibonacci(10) #f 是一个迭代器,由生成器函数返回生成 while True:
    try:
    print(next(f),end=' ')
    except StopIteration:
    sys.exit()

最新文章

  1. jquery遍历table获取td单元格的值
  2. JAVA JPA - 示例用法
  3. web页面的加载顺序
  4. LeetCode【217. Contains Duplicate】
  5. Tomcat 配置 HTTPS双向认证
  6. 如何生成RestFul Api文档
  7. 引擎设计跟踪(九.14.2h) 开发计划
  8. HDU1896Stones(优先队列)
  9. C# API: 生成和读取Excel文件
  10. codevs 1061 重复子串
  11. 触发按钮改变panel面板上的小圆圈颜色
  12. Shiro笔记--shiroFilter权限过滤
  13. bitset用法小结
  14. wcf生成客户端代理类步骤及语句
  15. sql查询语句时怎么把几个字段拼接成一个字段
  16. Manacher学习笔记
  17. SpringMVC的请求处理流程
  18. Code::Blocks环境下导入WS2_32.lib文件
  19. Mac 笔记本 开发日记
  20. MVC中使用JQuery方式进行异步请求和使用自带方式进行异步请求

热门文章

  1. Spring为IOC容器注入Bean的五种方式
  2. 写出float x 与“零值”比较的if语句——一道面试题分析
  3. Apache Solr Velocity模板注入RCE漏洞复现
  4. Django表单集合----Formset
  5. Unity5-ABSystem(二):AssetBundle导出
  6. 【IDEA】IDEA自动生成文档注释的设置方法
  7. 图片瀑布流,so easy!
  8. 学习笔记29_MVC异步上传图片
  9. python-->二进制的用法
  10. 使用FinalShell 安装jdk和tomcat流程(Linux系统是centOS7.5)