• day14-推导式和生成器表达式


    1.推导式规则

    [每一个元素或者是和元素相关的操作 for 元素 in 可迭代数据类型] ----------遍历之后挨个处理
    [满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关的条件] ----------筛选功能

    2.列表推导式

    # 原始的
    num_list = []
    for i in range(10):
        num_list.append(i)
    print(num_list)
    
    # 现在的---列表推导式
    num_list = [i for i in range(10)]
    print(num_list)

    简而言之,print([i for i in range(10)])就是一个列表推导式。

    num_list = [i for i in range(30) if i % 3 == 0]
    print(num_list)
    例1:30以内能被3整除的数
    1 num_list = [i*i for i in range(30) if i % 3 ==0]
    2 print(num_list)
    例2:30以内能被3整除的数的平方
    names_list = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
              ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    rcp = [name for lst in names_list for name in lst if name.count('e') == 2]
    print(rcp)
    例3:找到嵌套列表中名字含有两个‘e’的所有名字

    3.字典推导式

    1 start_dev = {'a':1,'b':2}
    2 end_dev = {start_dev[k]:k for k in start_dev}
    3 print(end_dev)
    例1:让字典的键和值对换
    1 dic = {'a':5,'B':10,'c':4,'A':5}
    2 rcp = {k.lower():dic.get(k.lower(),0)+dic.get(k.upper(),0) for k in dic}
    3 print(rcp)
    4 # result:{'a': 10, 'b': 10, 'c': 4}
    例2:合并大小写对应的value值,统一成小写

     4.集合表达式

    自带去重功能

    1 squa = {x**2 for x in [1,-1,2]}
    2 print(squa)
    View Code

    5.生成器表达式

    # 生成器表达式
    g = (i for i in range(10))
    for i in g:
        print(i)
    生成器表达式与列表推导式有什么不同?
    1.括号不一样
    2.返回的值不一样,生成器表达式几乎不占用内存。
  • 相关阅读:
    idea如何使用git关联远程仓库
    项目首次上传至git仓库步骤
    Eclipse 的 Java Web 项目环境搭建
    Postman
    Postman接口测试之POST、GET请求方法
    接口测试3A原则
    使用unittest和ddt进行数据驱动
    每天进步一点点006
    每天进步一点点005
    Selenium2+python自动化1-环境搭建(悠悠课程之路)
  • 原文地址:https://www.cnblogs.com/missdx/p/11014613.html
Copyright © 2020-2023  润新知