zoukankan      html  css  js  c++  java
  • Python推导式pythonic必备

    推导式(又称解析式) 是Python的⼀种独有特性。

    推导式是可以从⼀个数据序列构建另⼀个新的数据序列的结构体。 共有三种推导: 
    - 列表(list)推导式 
    - 字典(dict)推导式 
    - 集合(set)推导式

    列表推导式 (list comprehensions)

    列表推导式(又称列表解析式) 提供了⼀种简明扼要的方法来创建列表。

    它的结构是在一个中括号里包含一个表达式, 然后是一个for语句, 然后是0个或多个for或者if语句。 那个表达式可以是任意的, 意思是你可以在列表中放入任意类型的对象。 返回结果将是⼀个新的列表, 在这个以if和for语句为上下⽂的表达式运⾏完成之后产生

    规范 

    variable = [x for x in list if something == 2] 

    这⾥是另外⼀个简明例子:

    multiples = [i for i in range(30) if i % 3 is 0]
    print(multiples)# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]123

    列表推导式在有些情况下超赞, 特别是当你需要使⽤for循环来生成一个新列表。 举个例子, 通常一般人会这样做:

    squared = []for x in range(10):
        squared.append(x**2)123

    你可以使⽤列表推导式来简化它: 

    squared = [x**2 for x in range(10)]

    字典推导式(dict comprehensions)

    字典推导式,使用的场景比较少,但是有一点是超级赞的!

    问题:遇到字典的键值对互换,你会怎么操作?

    1. 使用for循环?

    mydict={"a":1,"b":2,"c":3}
    mydict_new={}for key,val in mydict.items():
        mydict_new[val]=key1234

    2. 使用zip?

    mydict={"a":1,"b":2,"c":3}
    newdict=dict(zip(mydict.values(),mydict.keys()))12

    3. say no,你应该使用字典推导式!

    mydict={"a":1,"b":2,"c":3}
    newdict={v: k for k, v in some_dict.items()}ornewdict=dict([val,key] for key,val in mydict.items())1234

    集合推导式(set comprehensions)

    至于集合推导式,跟列表推导式大同小异,不过在去重方面是set的强项 
    举个栗子:

    squared = {x**2 for x in [1, 1, 2]}
    print(squared)# Output: {1, 4}

    来源:华为云社区  作者:一梦七年诗

  • 相关阅读:
    Django项目:CMDB(服务器硬件资产自动采集系统)--01--01CMDB获取服务器基本信息
    rabbitmq 实现多个消费队列
    mssql附加的数据库查询的时候没有搜索权限
    mvc 返回json格式时间格式化
    HighChat动态绑定数据 数据后台绑定(四)
    双向绑定
    v-bind 属性绑定
    v-on 事件触发
    v-text和v-html绑定数据显示
    插值表达式
  • 原文地址:https://www.cnblogs.com/2020-zhy-jzoj/p/13165745.html
Copyright © 2011-2022 走看看