zoukankan      html  css  js  c++  java
  • python-迭代器和生成器

     2017-07-29 22:54:28

    在python中迭代器是指可以通过next()函数不断获得下一个数值的对象,生成器就是迭代器,list,set等是可迭代对象,不是迭代器,可以通过iter()函数来的到其迭代器。

    一、迭代器

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:

    • 一类是集合数据类型,如listtupledictsetstr等;
    • 一类是generator,包括生成器和带yield的generator function。

    这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

    可以使用isinstance()判断一个对象是否是Iterable对象

    迭代是Python最强大的功能之一,是访问集合元素的一种方式。。

    迭代器是一个可以记住遍历的位置的对象。

    迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

    迭代器有两个基本的方法:iter()next()

    字符串,列表或元组对象都可用于创建迭代器:

    >>>list=[1,2,3,4]
    >>> it = iter(list)    # 创建迭代器对象
    >>> print (next(it))   # 输出迭代器的下一个元素
    1
    >>> print (next(it))
    2
    >>>
    list=[1,2,3,4]
    it = iter(list)    # 创建迭代器对象
    for x in it:
        print (x, end=" ")

     也可以使用 next() 函数:

    #!/usr/bin/python3
     
    import sys         # 引入 sys 模块
     
    list=[1,2,3,4]
    it = iter(list)    # 创建迭代器对象
     
    while True:
        try:
            print (next(it))
        except StopIteration:
            sys.exit()

    二、生成器

    在 Python 中,使用了 yield 的函数被称为生成器(generator)。

    跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行 next()方法时从当前位置继续运行。

     

  • 相关阅读:
    拼接带有汉字的html接口时应注意的问题
    引入第三方友盟分享出现的问题
    修改系统文件内容的经典错误总结
    实例变量 、 属性 、便利构造器、设置器、 访问器、实例方法("-") 、类方法("+"静态方法)、单例
    iOS开发 调用打电话,发短信
    UINavigationController的相关设置
    “商城项目”自定义搜索框
    下拉刷新,上拉加载更多
    NSArray数组随机排序
    面向对象概念
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/7257862.html
Copyright © 2011-2022 走看看