zoukankan      html  css  js  c++  java
  • 十二、迭代器和生成器

    迭代器:以list为例
    >>> help(list.__iter__)
    Help on wrapper_descriptor:
     
    __iter__(self, /)
    Implement iter(self).
     
    内部一个数据结构里面,如果还有下一个,把下一个拿给你,直到没有下一个了,迭代器的内部会执行next方法
    >>> a = [1,2,3,4,5,6,7,8]
    >>> iter(a)
    <list_iterator object at 0x02AE4190>
    >>> for i in iter(a):print (i)
     
    1
    2
    3
    4
    5
    6
    7
    8
     
    生成器:
    range不是生成器 xrange是生成器
    readlines不是生成器 xreadlines是生成器
     
    >>> range(1000000)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9。。。。。。。。。]
     
    >>> xrange(1000000)
    xrange(10000000)
     
    总结:
    以上面为例:
    >>> range(1000000),它会在内存里不停的活动
    >>> xrange(1000000),你创建多少都无所谓,我就是在内存里放着,你什么时候要用的时候我再创建
     
    生成器内部基于yield创建,即:对于生成器只有使用时才创建,从而不避免内存浪费
     
  • 相关阅读:
    implicit request ?
    Scala curly braces & parenthesis
    play framework Reads[A] and, andThen, reduce
    play framework 中耍 JSON 基礎
    asynchronous
    第一次接觸sbt會遇到的
    SBT, activator, play之間的糾葛
    leetcode67
    leetcode26
    leetcode341
  • 原文地址:https://www.cnblogs.com/steven9898/p/11329377.html
Copyright © 2011-2022 走看看