关键词不能为空

当前您在: 主页 > 英语 >

【笔记】Python之解析式详解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-10 20:33
tags:

-

2021年2月10日发(作者:细口瓶)


【笔记】


Python


之解析式详解

< p>


目录



1.



2.



3.



4.




解析式的简单介绍



列表解析式



字典解析式



集合解析式



1


、解析式简单介绍





推导式:


Comprehensions


(又称解析式),是


Pytho n


的一种独有特性。推导式是可以


从一个数据序列构建另一个新 的数据序列的结构体。



共有三种推导,在

Python2



3


中都


有支持:





a.


列表解析



# Python2


只有列表解析





b.


生成器解析



# Python3


特有





c.


集合解析



# Python3


特有





d.


字典解析



# Python3


特有



解析式的作用:





a.


修改可迭代对象





b.


过滤可迭代对象



2


、列表解析式





列表解析的一般形式:



[expression


for


item


in


iterable]


#[


表达式


for


元素



可迭代对象


]





接下来看几个示例:



In[23]


:


[2 ** n for n in range(10)]


Out[23]


:


[1, 2, 4, 8, 16, 32,


64, 128, 256, 512]



In[


24


]:


def



inc


(x)


:



...:


return


x +


1



...:



In[


25


]: [inc(x)


for


x


in


range(


10


)]


Out[


25


]: [


1


,


2


,


3


,


4


,


5


,


6


,


7


,


8


,


9


,


10


]



In[


26


]: [


0



for


x


in


range(


10


)]


Out[


26


]: [


0


,


0


,


0


,


0


,


0


,


0


,


0


,


0


,


0


,


0


]



In[


27


]:


def



non_return


(x)


:



...:


pass



...:


In[


28


]: [non_return(x)


for


x


in


range(


10


)]


Out[


28


]: [


None


,


None


,


None


,


None


,


None


,


None


,


None


,


None


,


None


,


None


]





列表解析式返回的结果是列表,列表的内容是表达式执行的结 果。接着看例子:




In[


13


]: [x


for


x


in


range(


10


)


if


x %


2


==


0


]


Out[


13


]: [


0


,


2


,


4


,


6


,


8


]


#


上面的语句等效于



ret = []


for


x


in


range(


10


):



if


x %


2


==


0


:


(x)





可以使用


python



timeit


来测试两种方式的执行效率。


会发现列表解析的执行效率会


好一些


,


优势显而易见。

< br>


#



/usr/bin/env python# -*- coding: utf-8 -*-# Created by Xi on


2019-02-21



import


timeit


list =[]


def



fun


()


:




for


i


in


range(


100


):



if


i%


2


==


0


:


(i)



n =


1000000


if


__name__ ==


'__main__'


:


print((stmt=fun,number=n))


print((stmt=



x %2==0]


,number=n))



输出结果:



7.920102399


999999


4.72995



如果列表解析式中有


if


关键字呢:




[expression


for


item


in


iterable


if


condition] #[


表达式



for



元素



in



可迭


代对象



if



条件语句


]


#


等价于



ret = []


for


item


in


iterable:



if


condition:


ret.


append


(exper)



以上介绍的只带了一个


if


关键字,如 果有多个


if


关键字呢:




[experessi on


for


item


in


iterable


if


condition1


if


condition2]


#


等价于



ret = []


for


item


in


iterable:



if


condition1:



if


condition2:


(experession)



针对上面来个例子:



[


x


for x in range(


10


) if x %


2


==


0


if x >


1


][


2


,


4


,


6


,


8


]


-


-


-


-


-


-


-


-



本文更新与2021-02-10 20:33,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/631582.html

【笔记】Python之解析式详解的相关文章