• python列表解析式,字典解析式,集合解析式和生成器


    一.列表解析式(列表推倒式):

    功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表.

    1 lst = [1, 3, 5, 8, 10]
    2 ll = [x+x for x in lst if x <= 5]
    3 print ll
    4 >>>[2, 6, 10]

    二.字典解析式:

    1 dic = {'a': 1, 'b': 2, 'c': 3}
    2 d = {k: v for k, v in dic.items() if v >=2}
    3 print d
    4 >>>{'c': 3, 'b': 2}

    三.集合解析式:

    集合推导和列表推导的使用方法是类似的,只不中括号该改成大括号.

    1 lst = [1, 3, 5, 8, 10]
    2 aa = {x+x for x in lst if x <= 5}   //注意集合解析式使用大括号!!!
    3 print aa
    4 >>>set([2, 10, 6])          //且输出为一个集合!!!

    四.生成器:

      通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
      所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

    python提供两种方式创造生成器:

    ①生成器函数:和常规函数一样定义,不过用 yield 而不是 return 。
     yield会一次返回一个结果,然后挂起,下次从挂起处继续执行,这样就解决了内存的限制。
     注:其他方式会一次执行完所有的结果,然后再一次返回一个结果,这样,如果数据量大就会受到内存的限制,而且会占用大存储空间。
     def gen(n):
         for i in range(n):
             yield i + 2
     for item in gen(10):
         print item
     
    ②生成器生成式:
     生成器生成式和列表生成式类似,只是将方括号替换为括号。
     generators = (x+2 for x in range(10))

    友情链接:点我

  • 相关阅读:
    swiper.js 点击链接跳转后再次返回到轮播原位置
    KVO和KVC
    XML与HTML的区别
    iOS UIAppearance使用详解
    文件处理
    IOS 四种数据永久保存的方式
    UIImage图片处理(更改颜色,修改透明度,缩小,合并图片)
    从一个视图控制器切换到另一个视图控制器的几种方式
    NSString的常用方法
    NSURLRequest和NSURLConnection
  • 原文地址:https://www.cnblogs.com/TF511/p/9786762.html
Copyright © 2020-2023  润新知