• 技术文章 >后端开发 >Python教程

    python基础之迭代器与生成器

    高洛峰高洛峰2017-03-27 16:41:01原创1062

    迭代器与生成器


    1、迭代器

    迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件

    特点:

    1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容

    2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问

    3. 访问到一半时不能往回退

    4. 便于循环比较大的数据集合,节省内存


    >>> a = iter([1,2,3,4,5])
    >>> a
    <list_iterator object at 0x101402630>
    >>> a.__next__()
    1
    >>> a.__next__()
    2
    >>> a.__next__()
    3
    >>> a.__next__()
    4
    >>> a.__next__()
    5
    >>> a.__next__()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration

    2、生成器

    一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator);如果函数中包含yield语法,那这个函数就会变成生成器;


    def func():
        yield 1
        yield 2
        yield 3
        yield 4

    上述代码中:func是函数称为生成器,当执行此函数func()时会得到一个迭代器。


    >>> temp = func()
    >>> temp.__next__()
    1
    >>> temp.__next__()
    2
    >>> temp.__next__()
    3
    >>> temp.__next__()
    4
    >>> temp.__next__()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration

    3、实例

    a、利用生成器自定义range


    def xrange(n):   
        start = 0
        print(start)
        while True:
            if start > n :
                return
            yield start
            start += 1
    obj = xrange(4)
    n1 = obj.__next__()
    n2 = obj.__next__()
    n3 = obj.__next__()
    n4 = obj.__next__()
    n5 = obj.__next__()
    n6 = obj.__next__()
    print(n1,n2,n3,n4,n5,n6)

    b、利用迭代器访问range

    以上就是python基础之迭代器与生成器 的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:python
    上一篇:python下实现汉诺塔方法 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Python NumPy教程之数据类型对象• 在Django的视图(View)外使用Session的方法• Python标准库中的logging用法示例• python发腾讯微博代码分享• 使用Python处理KNN分类算法
    1/1

    PHP中文网