zoukankan      html  css  js  c++  java
  • 列表推导式和生成器表达式

    列表推导式:

    # ----- 列表推导式 ----
    # 循环
    ls = [i for i in range(0,10)]
    # 筛选
    ls_2 = [i for i in range(0,100) if i%2 == 0]

    找到嵌套列表中名字含有两个‘e’的所有名字

    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
             ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    # for lst in names     for name in lst 最终要的是name 
    print([name for lst in names for name in lst if name.count('e') >=2])

    字典推导式

    将一个字典的key和value对调:

    mcase = {'a': 10, 'b': 34}
    dic = {mcase[k]:k for k in mcase}
    print(dic)

    集合推导式

    计算列表中每个值的平方,自动去重

    squared = {x**2 for x in [1,-1,2]}

    生成器表达式

    1、把列表解析的[]换成()得到的就是生成器表达式。

    2、列表解析和生成器表达式都是一种便利的变成方式,只不过生成器表达式更节省内存。

    3、Python不但使用迭代器协议,让for循环变得更加通用。大部分内置函数,也是使用迭代器协议访问对象的。所以,我们可以直接这样计算一系列值得和:

    sum(x ** 2 for x in range(4,8))
    生成器表达式背后遵守了迭代器协议,可以逐个的产出元素,可以节省内存,而不是先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。
  • 相关阅读:
    Oracle学习系列7
    oracle 体系结构
    数据库设计三大范式
    Oracle学习系列6
    Oracle学习系列5
    Unity3D for Android 纹理压缩支持
    Unity项目UI图片压缩格式(UGUI)
    [Unity3D]关于U3D贴图格式压缩
    unity 联机调试(android ios)
    UGUI 文字效果实现(ShadowGradientOutline)
  • 原文地址:https://www.cnblogs.com/liangying666/p/9204019.html
Copyright © 2011-2022 走看看