版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

编程规范

今天公司新出了一套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]
这⾥是另外⼀个简明例子:

 multiples = [i for i in range() if i %  is ]
print(multiples)
# Output: [, , , , , , , , , ]

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

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

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


集合推导式(set comprehensions)

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

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

字典推导式(dict comprehensions)

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

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

  1. 使用for循环?

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

2.使用zip?

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

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

 mydict={"a":,"b":,"c":}
newdict={v: k for k, v in some_dict.items()}
or
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开放能力的最佳舞台。

欢迎报名参会

python推导式pythonic必备【华为云技术分享】的更多相关文章

  1. python推导式pythonic必备

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

  2. 通过哪吒动漫豆瓣影评,带你分析python爬虫与BeautifulSoup快速入门【华为云技术分享】

    久旱逢甘霖 西安连着几天温度排行全国三甲,也许是<哪吒之魔童降世>的剧组买通了老天,从踩着风火轮的小朋友首映开始,就全国性的持续高温,还好今天凌晨的一场暴雨,算是将大家从中暑边缘拯救回来了 ...

  3. 这个七夕节,用Python为女友绘制一张爱心照片墙吧!【华为云技术分享】

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群:输入关键字“最新活动”,获取华为云最新特惠促销.华为云诸多技术大咖.特 ...

  4. Python正则表达式,看完这篇文章就够了...#华为云&#183;寻找黑马程序员#【华为云技术分享】

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

  5. Python开发GUI工具介绍,实战:将图片转化为素描画!【华为云技术分享】

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

  6. Python面试的一些心得,与Python练习题分享【华为云技术分享】

    版权声明:本文为CSDN博主「华为云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/devcloud/arti ...

  7. Python爬虫从入门到精通——基本库re的使用:正则表达式【华为云技术分享】

    置顶:华为云618大促火热进行中,全场1折起,免费抽主机,消费满额送P30 Pro,点此抢购. 正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索.替换.匹配验证都不在 ...

  8. Python 中拼音库 PyPinyin 的用法【华为云技术分享】

    [摘要] 最近碰到了一个问题,项目中很多文件都是接手过来的中文命名的一些素材,结果在部署的时候文件名全都乱码了,导致项目无法正常运行. 后来请教了一位大佬怎么解决文件名乱码的问题,他说这个需要正面解决 ...

  9. 用python读取word文件里的表格信息【华为云技术分享】

    在企查查查询企业信息的时候,得到了一些word文件,里面有些控股企业的数据放在表格里,需要我们将其提取出来. word文件看起来很复杂,不方便进行结构化.实际上,一个word文档中大概有这么几种类型的 ...

随机推荐

  1. [考试反思]0725NOIP模拟测试8

    看清你是个什么东西了么? 现在看清了么?rank#15?垃圾玩意? 你什么也不是.你没有骄傲,偷懒的资格! 节节败退,永无止境,你想掉到什么样子? 你还在为了成功拿到送分的T1而沾沾自喜?只不过是勉强 ...

  2. NOIP模拟测试40

    考试时打了三个正解(或者叫能A的算法?),但是最终一个都没有A. 比较失败的一次考试. T1.队长快跑 先打了70分的dp,然后发现这个式子可以优化,拿线段树搞一下就好了,发现考试已经过去1h了,决定 ...

  3. NOIP模拟 10

    (果然题目描述越人畜无害,题目难度越丧心病狂) (感觉T2大大锻炼了我的码力) T1 辣鸡 看见自己作为题目标题出现在模拟赛中,我内心无比激动 看完题面,一个N^2暴力思路已经成形 然后开始拼命想正解 ...

  4. ubuntu下minicom和usb串口转接

    ubuntu下minicom和USB转串口(转) (2013-03-23 21:07:54) 转载▼ 标签: it 分类: 嵌入式linux minicom是linux下串口通信的软件,它的使用完全依 ...

  5. jquery写$ document.getElementById效果

    jquery写$ document.getElementById效果<pre>document.getElementById('video-canvas')和$('#video-canva ...

  6. 201871010114-李岩松《面向对象程序设计(java)》第十二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  7. connected datagram 与TCP连接的区别

    TCP连接流程是TCP协议的一部分,需要经过三次握手.而connected datagram虽然使用了socket的同样的函数connect,但是UDP协议并不包含连接流程,也就是UDP实际上并没有真 ...

  8. 同时发起TCP连接

    如果你的socket编程只限于创建SOCK_STREAM的socket,用connect-accept建立连接,然后就是recv,send.你就会惊奇tcp连接还可以不用accept. 上图为两个AF ...

  9. Java虚拟机的内存

    JDK1.8之前,java内存分为 线程共享区:堆.方法区.直接内存(非运行时数据区的一部分).线程私有区:程序计数器.虚拟机栈.本地方法栈. JDK1.8开始,虚拟机取消了方法区,改为元空间. 程序 ...

  10. 稀疏数组 python描述

    什么是稀疏矩阵? 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵. 作用: 在这种情况下,很多0值无疑是很浪费空间的,当我们要把数组存储在磁盘中 ...