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))
    生成器表达式背后遵守了迭代器协议,可以逐个的产出元素,可以节省内存,而不是先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。
  • 相关阅读:
    随机数
    ASP .NET下的301重定向如何做
    网站外部链接建设方案
    解析ASP.NET WebForm和Mvc开发的区别
    委托、匿名委托和lambda表达式
    图片垂直居中
    jquery函数写法
    [转]函数方法常用的动词
    CSS Hack
    富文本编辑器
  • 原文地址:https://www.cnblogs.com/liangying666/p/9204019.html
Copyright © 2011-2022 走看看