zoukankan      html  css  js  c++  java
  • day13——Python列表生成式和生成器

        列表生成式是Python受欢迎的语法之一,通过一句简洁的语法就可以对一组元素进行过滤,还可以对得到的元素进行转换算下。语法格式为:
    #列表生成式
    #求偶数的平方
    li = [x*x for x in xrange(1,101) if x%2 == 0]
    print(li)
     
    print('#'*50)
    #列表生成器
    #1.最简单的就去,把原来的生成式的[]换成()就ok了
    lt = (x*x for x in xrange(1,101) if x%2 == 0)
    print(lt)
    print('#'*50)
    print(type(lt))
    print('#'*50)
    for i in lt:
    print(i),
     
    #2.函数中定义列表生成器
    print('#'*50)
    def fib(n):
    sum = 0
    i = 0
    while(i<n):
    sum = sum + i
    i += 1
    yield(sum)
    print(type(fib(10)))
    for x in fib(10):
    print(x)
     
    打印结果为:
    [4, 16, 36, 64, 100, 144, 196, 256, 324, 400, 484, 576, 676, 784, 900, 1024, 1156, 1296, 1444, 1600, 1764, 1936, 2116, 2304, 2500, 2704, 2916, 3136, 3364, 3600, 3844, 4096, 4356, 4624, 4900, 5184, 5476, 5776, 6084, 6400, 6724, 7056, 7396, 7744, 8100, 8464, 8836, 9216, 9604, 10000]
    ##################################################
    <generator object <genexpr> at 0x000000000220E2D0>
    ##################################################
    <type 'generator'>
    ##################################################
    4 16 36 64 100 144 196 256 324 400 484 576 676 784 900 1024 1156 1296 1444 1600 1764 1936 2116 2304 2500 2704 2916 3136 3364 3600 3844 4096 4356 4624 4900 5184 5476 5776 6084 6400 6724 7056 7396 7744 8100 8464 8836 9216 9604 10000 ##################################################
    <type 'generator'>
     
     
     
    生成器和生成式的区别:
     
    #生成式:一次性生成所有的数据,然后保存在内存中,适合小量的数据
    #生成器:返回一个可以迭代的对象,及'generator'对象,必须通过循环才可以一一去取所有的结果
    #可迭代对象:可以通过循环调用出来的,就是可迭代的对象,如:[]、()、{}、生成式
    #迭代器:可以简单理解成生成器,必须通过next()函数调用的,被next()函数调用并不断返回下一个值的对象称为迭代器
     
     
    1 for i in xrange(1,10):
    2     for j in xrange(1,i+1):
    3         print "%s*%s = %s" %(j,i,j*i),
    4     print
     
  • 相关阅读:
    微信JS SDK Demo
    两种方法实现在HTML页面加载完毕后运行某个js
    JS 页面加载触发事件 document.ready和onload的区别
    Thinkphp3.2添加QQ互联和新浪微博一键登录功能
    bootstrap-select实现下拉框多选效果
    Sass (Syntactically Awesome StyleSheets)
    常见MFC UI界面库[转]
    VTK序列图像的读取[转][改]
    c语言-格式控制字符 %XXd 用法
    3DSlicer源代码编译过程vs2008+windows xp [转]
  • 原文地址:https://www.cnblogs.com/yangjinbiao/p/7781066.html
Copyright © 2011-2022 走看看