当前位置: 首页 > 后端技术 > Python

实用又酷!像这样编写Python代码会有很大的不同!

时间:2023-03-25 22:25:56 Python

评判一个程序员的水平,不能只看他的发量,也不能只看他的代码量,更要看他的代码中包含的思想和代码的质量。代码中包含的思想主要体现在各种设计模式的应用上,代码的质量不仅要实现需求,还要保证代码的简洁和优雅。保证代码质量需要长期积累,养成良好的编程习惯,不断思考优化。今天给大家介绍一个保证代码简洁的实用门派——Python推导四式。什么是推导推导推导(又称解析推导),是python独有的特性。推导是从一个数据序列构造另一个新数据序列的能力。看到定义很抽象,我们来看具体的例子,通过例子来学习这四种推导。列表理解先来看一个需求:快速创建一个包含元素1-9的方形列表。面对这个需求,我们通常的实现方式是这样的:lis=[]foriinrange(1,10):lis.append(i*i)print(lis)#[1,4,9,16,25,36,49,64,81]如何用列表理解来实现它?你只需要一行代码:lis=[x*xforxinrange(1,10)]print(list)#[1,4,9,16,25,36,49,64,81]这是的推导。我们可以看到列理解的语法是这样的:variablename=[expressionforvariableinlist]更复杂的是:list=[x*yforxinrange(1,10)foryinrange(1,10)]print(lis)#[1,2,3,4,5,6,7,8,9,2,4,6,8,10,12,14,16,18,3,6,9,12,15,18,21,24,27,4,8,12,16,20,24,28,32,36,5,10,15,20,25,30,35,40,45,6,12,18,24,30,36,42,48,54,7,14,21,28,35,42,49,56,63,8,16,24,32,40,48,56,64,72,9,18,27,36,45,54,63,72,81]这是多变量的类型,所以我们可以扩展上面的语法:变量名=[expressionforvariableinlistforVariableinxxx]当然还有条件列推导,它的语法如下:变量名=[expressionforvariableinlistifcondition]我们来看一个需求:快速创建一个包含1-10个所有的列表之间的偶数。lis=[iforiinrange(1,11)ifi%2==0]print(lis)#[2,4,6,8,10]字典理解字典理解的形式类似于列表理解,语法类似,只是字典理解返回的结果是字典。变量名={key:valueexpression}让我们看一个例子:dic={x:x/2forxinrange(1,11)ifx%2==0}print(dic)#{2:1.0,4:2.0,6:3.0,8:4.0,10:5.0}如果我这样写,返回的结果是什么?dic={'half':x/2forxinrange(1,11)ifx%2==0}print(dic)你可以自己尝试运行一下,看看结果是不是和你想的一样。集合推导看完前面两个推导,想必你已经知道集合推导怎么写了。语法如下:变量名={expressionforvariableinlistforvariableinxxx}或变量名={expressionforvariableinlistifcondition}举个实际的例子:创建一个存储10个偶数的集合。set1={xforxinrange(10)ifx%2==0}print(set1)#{0,2,4,6,8}元组推导先来看一个例子:tup=(xforxinrange(1,10))print(tup)#at0x1101fade0>看到这个结果打印是不是有点迷惑?上面代码返回的变量实际上是一个生成器,而不是一个元组。实际上,并没有真正的元组推导,我们只能用类似的方法来生成元组,姑且称之为“伪元组推导”。我们把上面的例子改进一下:tup=tuple(xforxinrange(1,10))print(tup)#(1,2,3,4,5,6,7,8,9)在前面加上就行了元组显式执行类型转换。总结这里介绍四种python推导,主要用于简化循环代码,生成不同的数据结构。当然,从这些基本的表达式语法出发,也可以应用复杂的推导,写代码时用心使用就会发现它的威力。这种一行代码,不仅简洁明了,还能在新手面前炫技,不要用的太爽!以上就是本次分享的全部内容。想了解更多python知识,请前往公众号:Python编程学习圈,每日干货分享