• Python生成器表达式


    https://www.cnblogs.com/liu-shuai/p/6098218.html

    简介:

      生成器表达式并不真正的创建数字列表,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目"产生"(yield)出来。生成器表达式使用了"惰性计算"或称作"延时求值"的机制。

      序列过长,并且每次只需要获取一个元素时,应该考虑生成器表达式而不是列表解析。

    语法:

      (expression for iter_val in iterable)

      (expression for iter_val in iterable if cond_expr)

    实例展示:

    复制代码
     1 >>> N = (i**2 for i in range(1,11))
     2 >>> print N
     3 <generator object <genexpr> at 0x7fe4fd0e1c30>      #此处返回的是一个生成器的地址
     4 >>> N.next()
     5 1
     6 >>> N.next()
     7 4
     8 >>> N.next()
     9 9
    10 >>> N.next()
    11 16
    12 >>> N.next()
    13 25
    14 >>> N.next()
    15 36
    16 >>> N.next()
    17 49
    18 >>> N.next()
    19 64
    20 >>> N.next()
    21 81
    22 >>> N.next()
    23 100
    24 >>> N.next()                #所有元素遍历完后,抛出异常
    25 Traceback (most recent call last):
    26   File "<stdin>", line 1, in <module>
    27 StopIteration    
    复制代码
    复制代码
     1 >>> import os
     2 >>> F = (file for file in os.listdir('/var/log') if file.endswith('.log'))
     3 >>> print F
     4 <generator object <genexpr> at 0x7fe4fd0e1c80>
     5 >>> F.next()
     6 'anaconda.ifcfg.log'
     7 >>> F.next()
     8 'Xorg.0.log'
     9 >>> F.next()
    10 'anaconda.storage.log'
    11 >>> F.next()
    12 'Xorg.9.log'
    13 >>> F.next()
    14 'yum.log'
  • 相关阅读:
    Java虚拟机一
    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException
    Java虚拟机
    topcoder srm 663 div1
    topcoder srm 694 div1 -3
    topcoder srm 695 div1 -3
    topcoder srm 696 div1 -3
    topcoder srm 697 div1 -3
    topcoder srm 661 div1
    topcoder srm 698 div1 -3
  • 原文地址:https://www.cnblogs.com/fengff/p/10265899.html
Copyright © 2020-2023  润新知