评判一个程序员的水平,不能只看他的发量,也不能只看他的代码量,更要看他的代码中包含的思想和代码的质量。代码中包含的思想主要体现在各种设计模式的应用上,代码的质量不仅要实现需求,还要保证代码的简洁和优雅。保证代码质量需要长期积累,养成良好的编程习惯,不断思考优化。今天给大家介绍一个保证代码简洁的实用门派——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)#
