zoukankan      html  css  js  c++  java
  • 列表生成式 与生成器表达式

    列表生成式

    示例

    生成一个列表  l=['egg1','egg2','egg3',''egg4',........'egg99']
    按照常规写法如下:
    list=[]
    for i in range(100):
        list.append('egg%s'%(i))
    
    print(list)
    
     但是如果我们按照列表的生成方式来做就很简单:
    list=['egg%s' %i for i in range(100)]
    print(list)
    #打印结果如下:

    ['egg0', 'egg1', 'egg2', 'egg3', 'egg4', 'egg5', 'egg6', 'egg7', 'egg8', 'egg9', 'egg10', 'egg11', 'egg12', 'egg13', 'egg14', 'egg15', 'egg16', 'egg17', 'egg18', 'egg19', 'egg20', 'egg21', 'egg22', 'egg23', 'egg24', 'egg25', 'egg26', 'egg27', 'egg28', 'egg29', 'egg30', 'egg31', 'egg32', 'egg33', 'egg34', 'egg35', 'egg36', 'egg37', 'egg38', 'egg39', 'egg40', 'egg41', 'egg42', 'egg43', 'egg44', 'egg45', 'egg46', 'egg47', 'egg48', 'egg49', 'egg50', 'egg51', 'egg52', 'egg53', 'egg54', 'egg55', 'egg56', 'egg57', 'egg58', 'egg59', 'egg60', 'egg61', 'egg62', 'egg63', 'egg64', 'egg65', 'egg66', 'egg67', 'egg68', 'egg69', 'egg70', 'egg71', 'egg72', 'egg73', 'egg74', 'egg75', 'egg76', 'egg77', 'egg78', 'egg79', 'egg80', 'egg81', 'egg82', 'egg83', 'egg84', 'egg85', 'egg86', 'egg87', 'egg88', 'egg89', 'egg90', 'egg91', 'egg92', 'egg93', 'egg94', 'egg95', 'egg96', 'egg97', 'egg98', 'egg99']

     

    跟一个if判断条件 如下:

    list=['egg%s' %i for i in range(100) if i>20]
    print(list)
    #打印结果如下:
    ['egg21', 'egg22', 'egg23', 'egg24', 'egg25', 'egg26', 'egg27', 'egg28', 'egg29', 'egg30', 'egg31', 'egg32', 'egg33', 'egg34', 'egg35', 'egg36', 'egg37', 'egg38', 'egg39', 'egg40', 'egg41', 'egg42', 'egg43', 'egg44', 'egg45', 'egg46', 'egg47', 'egg48', 'egg49', 'egg50', 'egg51', 'egg52', 'egg53', 'egg54', 'egg55', 'egg56', 'egg57', 'egg58', 'egg59', 'egg60', 'egg61', 'egg62', 'egg63', 'egg64', 'egg65', 'egg66', 'egg67', 'egg68', 'egg69', 'egg70', 'egg71', 'egg72', 'egg73', 'egg74', 'egg75', 'egg76', 'egg77', 'egg78', 'egg79', 'egg80', 'egg81', 'egg82', 'egg83', 'egg84', 'egg85', 'egg86', 'egg87', 'egg88', 'egg89', 'egg90', 'egg91', 'egg92', 'egg93', 'egg94', 'egg95', 'egg96', 'egg97', 'egg98', 'egg99']

    满足后面的if条件的情况下 在把值给到前面的表达式中去运用

    一般情况只跟一个if条件  , 多了就不适合了

    语法:list=[表达式 +循环体+(if判断)]

    优点:方便 改变了编程习惯 可称之为声明式编程

    生成式表达式:

    1、把列表推导式的[]换成生成器表达式就得到一个生成器。   就满足了在生成列表内容过大,防止内存撑爆的情况下, 改用生成器就很好的解决这一问题。

    2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性

    老母鸡=(‘egg%s’%i  for i in range(100))

    print(next(老母鸡)#打印结果  egg0

    print(next(老母鸡)#打印结果 egg1

    需要一个值 就调用一次

    需要一次就调用一次

    3、优点:省内存,一次只生产一个值在内存中。

    
    
    
  • 相关阅读:
    通过jarjar.jar来替换jar包名的详细介绍
    Android开发中adb启动失败adb连接异常的解决办法
    App你真的需要么
    MVC5 网站开发之九 网站设置
    MVC5 网站开发之八 栏目功能 添加、修改和删除
    MVC5 网站开发之七 用户功能 3用户资料的修改和删除
    Ninesky源代码从Codeplex迁移到开源中国
    MVC5 网站开发之七 用户功能 2 用户添加和浏览
    赶个项目,博客稍后更新
    MVC5 网站开发之七 用户功能 1、角色的后台管理
  • 原文地址:https://www.cnblogs.com/lx3822/p/8708809.html
Copyright © 2011-2022 走看看