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
     
  • 相关阅读:
    robotframework笔记9
    robotframework笔记8
    Spring预处理
    WebStrom快捷键
    json死循环问题
    java线程与缓存
    oss文件删除策略
    Eclipse自动编译问题
    将 JAR 转为 EXE – EXE4J 的使用教程(第一期)(转载)
    将 JAR 转为 EXE – JSMOOTH 的使用教程(第二期)(转载)
  • 原文地址:https://www.cnblogs.com/yangjinbiao/p/7781066.html
Copyright © 2011-2022 走看看