zoukankan      html  css  js  c++  java
  • 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开放能力的最佳舞台。

    欢迎报名参会

  • 相关阅读:
    C语言 realloc为什么要有返回值,realloc返回值具体解释/(解决随意长度字符串输入问题)。
    opencv中的vs框架中的Blob Tracking Tests的中文注释。
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 棋盘多项式
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
    Java实现 蓝桥杯VIP 算法提高 分苹果
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/11867901.html
Copyright © 2011-2022 走看看