• python推导式pythonic必备【华为云技术分享】


    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/devcloud/article/details/99860308

    编程规范

    今天公司新出了一套Python编程规范2.0,一直觉得自己写代码路子有点野,所以仔细的看了下。
    多数的内容在网上都能搜到,但有几点需要说说

    • 让我觉得羞愧的注释率
      公司要求代码注释行,占代码总行数的20%,而我经常一套代码写下来注释寥寥几行。甚至在Linux下写代码的时候,由于系统语言包问题,pycharm没办法打中文,经常出现通篇没有一行注释的情况...所谓,写自己的代码,让别人无处维护也就不过如此。但过了仗剑走天涯的年纪,要开始学着沉淀自己,不为别的,就为现在年轻的小伙子各个吃的好,长得壮。几个一起来,打不过啊,哈哈。
    • 规避单一循环
      这一点代码要求是我欣然接受的,我这人懒,能偷懒的偷懒,不能偷懒的想办法也要偷懒。这次的代码规范要求,单一辑的for循环,通过python推导式完成,但嵌套for循环禁止使用。我默默的忽略后面这句,for循环推荐python推导式....
      为什么喜欢推导式?因为省事儿、看这高端啊。最怕人说程序猿就是if ...else + for循环了....

    python推导式

    今天就给大家介绍下python推导式的使用

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

    推导式是可以从⼀个数据序列构建另⼀个新的数据序列的结构体。 共有三种推导:

    • 列表(list)推导式
    • 字典(dict)推导式
    • 集合(set)推导式

    列表推导式 (list comprehensions)

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

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

    规范

    variable = [x for x in list if something == 2]
    这⾥是另外⼀个简明例子:

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

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

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

    你可以使⽤列表推导式来简化它:
    squared = [x**2 for x in range(10)]


    集合推导式(set comprehensions)

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

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

    字典推导式(dict comprehensions)

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

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

    1. 使用for循环?

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

    2.使用zip?

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

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

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

    The End

    OK,如果觉得这篇文章对你有帮助,欢迎将文章或我的微信公众号【清风Python】转发分享给更多喜欢python的朋友们,谢谢。

    作者:清风Python

    HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

    欢迎报名参会

  • 相关阅读:
    身份证相关类
    微信开发相关文档
    password、文件MD5加密,passwordsha256、sha384、sha512Hex等加密
    图的割点(边表集实现)
    动态库DLL中类的使用
    吴恩达机器学习笔记_第三周
    Android官方开发文档Training系列课程中文版:性能优化建议
    简单算法汇总
    Gson解析第三方提供Json数据(天气预报,新闻等)
    Java字节码 小结
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/11867901.html
Copyright © 2020-2023  润新知