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

Python解析式

时间:2023-03-25 23:54:08 Python

在python中经常可以看到ret=[x**2forxinlst]等赋值语句。对于从C++转python的人来说,理解这个for循环的用法并不容易,这是python为了简洁而发明的新语法。python解析公式有以下优点:代码简洁易读,效率略高于普通迭代。python解析式分为以下四种:列表解析式、生成器解析式、集合解析式、字典解析式,下面分别介绍这四种。分析用途。列表推导的形式列表推导公式[exprforeiniterator]In[1]:lst=range(10)In[2]:%%timeit...:ret=[x**2forxinlst]...:100000循环,最好的3:每个循环5.28μsIn[3]:%%timeit...:ret=[]...:forxinlst:...:ret.append(x**2)...:100000loops,bestof3:6.09μsperloop#如果时间消耗稍微高一点,可以发现效率稍微高一点,最重要的是代码简洁。列表推导可以和if语句一起使用,比如过滤掉列表lst中的偶数:In[4]:ret=[]In[5]:forxinlst:...:ifx%2==0:。..:ret.append(x)#使用for循环...:In[6]:retOut[6]:[0,2,4,6,8]In[7]:ret=[xforxinlstifx%2==0]#使用列表推导式In[8]:retOut[8]:[0,2,4,6,8]列表推导式可以像for循环一样使用if语句.有多个if语句的可以转化为条件逻辑运算,所以一般来说,没有多个if语句的for语句是可以嵌套的。在[9]中:(x,y)forxinrange(0,5)foryinrange(5,10)文件“”,第1行(x,y)forxinrange(0,5)foryinrange(5,10)^SyntaxError:invalidsyntax#表示列表理解表达式必须用方括号括起来In[10]:[(x,y)forxinrange(5)foryinrange(5,10)]Out[10]:[(0,5),(0,6),(0,7),(0,8),(0,9),(1,5),(1,6),(1,7),(1,8),(1,9),(2,5),(2,6),(2,7),(2,8),(2,9),(3,5),(3,6),(3,7),(3,8),(3,9),(4,5),(4,6),(4,7),(4,8),(4,9)]In[11]:ret=[]In[12]:forxinrange(5):...:foryinrange(5,10):...:退役。append((x,y))...:In[13]:retOut[13]:[(0,5),(0,6),(0,7),(0,8),(0,9),(1,5),(1,6),(1,7),(1,8),(1,9),(2,5),(2,6),(2,7),(2,8),(2,9),(3,5),(3,6),(3,7),(3,8),(3,9),(4,5),(4,6),(4,7),(4,8),(4,9)]if语句的特殊用法单行if语句的写法很像列表推导式。表达式形式:xifcondelseyif和else必须同时存在。下面以偶数的平方和奇数的立方为例进行演示In[14]:ret=[]In[15]:forxinlst:...:ifx%2==0:...:退役。追加(x**2)...:否则:...:ret。append(x**3)...:In[16]:retOut[16]:[0,1,4,27,16,125,36,343,64,729]In[17]:x=3#if特殊用法In[18]:x**2ifx%2==0elsex**3Out[18]:27In[19]:3ifTrueelse4Out[19]:3#if的特殊用法if与列表理解公式一起使用xifcondelseyfor...In[20]:[x**2ifx%2==0elsex**3forxinlst]Out[20]:[0,1,4,27,16,125,36,343,64,729]generatorcomprehensionlistcomprehension返回一个列表,generator解析器返回一个解析器。列表推导式的方括号变成圆括号,就是生成器解析式。In[1]:range(10000)Out[1]:range(0,10000)In[2]:g=(x**2forxinrange(100000000000))In[3]:gOut[3]:at0x7f9f08a5f0a0>In[4]:next(g)Out[4]:0In[5]:next(g)Out[5]:1In[6]:next(g)Out[6]:4当列表理解公式和发电机理解公式的选择需要由下标,使用列表理解公式并且只需要迭代结果时,就首选使用Generator解析类型设置的解析类型替换方形支架带有花括号的列表推导式得到集合解析公式。In[1]:lst=[2,4,5,6,3,4,2]In[2]:s={xforxinlst}In[3]:sOut[3]:{2,3,4,5,6}#可以看出生成列表推导公式时会去掉重复,满足set要求In[4]:type(s)Out[4]:setThedictionary推导式也使用大括号,但与集合分析式不同的是,expr处使用的不是单个元素而是k,v对。在[1]:{str(x):xforxinrange(5)}Out[1]:{'0':0,'1':1,'2':2,'3':3,'4':4}这四种解析式中使用最广泛的是列表解析式,它往往有一些非常巧妙的用法。记得给我点赞哦!对计算机各个方向的视频课程和电子书,从入门、进阶、实用进行了认真梳理,并按照目录进行合理分类。你总能找到你需要的学习资料。你在等什么?立即关注并下载!!!念念不忘,必有回响,朋友们,请点个赞,万分感谢。我是职场亮哥,四年工作经验的YY高级软件工程师,拒绝当领导的斜杠程序员。听我说,我进步很大。如果有幸帮到你,请给我一个【点赞】,给我一个关注,如能评论鼓励,将不胜感激。职场凉阁文章列表:更多文章我的所有文章和回答均与版权保护平台合作,版权归职场凉阁所有。未经授权转载必究!