python高阶教程,Python进阶

python高阶教程,Python进阶,Python进阶之高级用法详细总结

今天带朋友们学习Python高级语法,主要包括Lambda表达式、map函数、filter函数、reduce函数、三大导函数等。文中有非常详细的介绍,有需要的可以参考一下。

目录

I Lambda表达式2、映射函数3、过滤函数4、归约函数5、三大推导5.1列表推导5.2集合推导5.3字典推导6、闭包7、修饰、语法糖、注释

一、Lambda表达式

Lambda表达式也叫匿名函数。

格式

Lambda参数列表:函数体

def add(x,y):

返回x y

打印(添加(3,4))

#上述函数可以写成Lambda函数

add _ lambda=x,y:x y

add_lambda(3,4)

二、map函数

函数有输入和输出,map的输入和输出的对应关系如下图所示:

就是把迭代的对象按照一定的规则映射到新的对象上。

所以map函数要有两个参数,一个是映射规则,一个是iterable对象。

列表1=[1,2,3,4,5]

r=map(lambda x:x x,list)

打印(列表1(r))

结果:[2,4,6,8,10]

m1=map(x,y:x*x y,[1,2,3,4,5],[1,2,3,4,5])

打印(列表(毫升))

结果:[2,6,12,20,30]

三、filter函数

滤波器的输入输出对应关系如下图所示:

定义为_not_none(s):

返回s和len(s.strip())0

list2=['',' ','你好',' xxxx ',无,' ai']

result=filter(is_not_none,list2)

打印(列表(结果))

结果:['你好',' XXXX ','艾']

四、reduce函数

从functools导入减少

f=x,y:x y x=reduce(f,[1,2,3,4,5])

打印(r)

结果:15=1 2 3 4 5

相当于基于先前计算结果的每次计算:

您还可以为reduce计算添加初始值:

从functools导入减少

f=x,y:x y x=reduce(f,[1,2,3,4,5],10)

打印(r)

结果:25=10 1 2 3 4 5

五、三大推导式

5.1 列表推导式

列表1=[1,2,3,4,5,6]

f=map(x:x x,list1)

打印(列表(f))

list2=[i i for i in list1]

打印(列表2)

列表3=[列表1中I的I * * 3]

打印(列表3)

#过滤列表示例

list4=[i*4 for i in list1 if i3]

打印(列表4)

#结果

[2,4,6,8,10,12]

[2,4,6,8,10,12]

[1,8,27,64,125,216]

[16,25,36]

5.2 集合推导式

直接复制上面的代码,然后把列表改成集合。

list1={1,2,3,4,5,6}

list2={i i for i in list1}

打印(列表2)

list3={i**3 for i in list1}

打印(列表3)

#过滤列表示例

list4={i*4 for i in list1 if i3}

打印(列表4)

#结果

{2, 4, 6, 8, 10, 12}

{64,1,8,216,27,125}#这里乱了

{16, 24, 20}

5.3 字典推导式

s={

'张三':20,

' lisi':15,

吴王:31岁

}

#拿出所有的钥匙,把它们变成一个列表

s_key=[ key for key,s.items()中的值]

打印(s键)

#结果

['张三','李四','吴王']

#交换键和值的位置,并注意冒号的位置

s1={ value: key for key,s.items中的值()}

打印(s1)

#结果

{20:《张三》,15:《伊里斯》,31:《吴王》}

S2={ key:key的值,s.items()中的值,如果key=='1isi'}

打印(s2)

#结果

{'lisi':15}

六、闭包

闭包:返回值是函数的函数。

导入时间

def运行时():

现在定义时间():

print(time.time())

Now _ time #返回值是函数名

F=runtime()#f被赋值为函数now_time()

F()#运行f相当于运行now_time()

让我们看另一个带参数的例子:

假设有一个三行的csv文件,如下所示:

甲、乙、丙、丁、戊

1,2,3,4,5

6,7,8,9,10

def make_filter(keep):# keep=8

定义过滤器(文件名):

File=open(文件名)#打开文件

Lines=file.readlines()#逐行读取文件

File.close()#关闭文件

Filter _ doc=[I for I in lines if keep in I]#过滤文件内容

返回过滤器_文档

返回_过滤器

1=make_filter ('8') #这一行调用make_filter函数,传递8作为要保留的参数,接受_filter函数作为返回值。

这里的# filter1等于函数the_filter

filter _ result=filter 1(' data.csv ')#将文件名data . CSV作为参数传递给函数the_filter

打印(过滤结果)

#结果

['6,7,8,9,10']

七、装饰器、语法糖、注解

#这是获取函数开始运行时间的函数

导入时间

定义运行时(函数):

def获取时间():

print(time.time())

调用func()# run。

返回获取时间

@运行时

定义运行()

打印(“学生运行”)

#运行

运行()

#结果

目前

学生跑步

由于decorator @runtime的存在,run函数将作为参数被抛入runtime(func)中。如果调整打印时间代码的位置,会有不同的结果:

#这是获取函数运行结束时间的函数

导入时间

定义运行时(函数):

def获取时间():

调用func()# run。

print(time.time())

返回获取时间

@运行时

定义运行()

打印(“学生运行”)

#运行

运行()

#结果

学生跑步

目前

还要注意,这里也使用了闭包的概念。运行run函数时,实际调用的是get_time函数。

有关如何调用带有多个参数的函数,请参见下面的示例。

#有一个参数。

导入时间

定义运行时(函数):

定义获取时间(I):

调用func(i)# run。

print(time.time())

返回获取时间

@运行时

定义运行(一)

打印(“学生运行”)

#运行

跑步(1)

#有两个参数

导入时间

定义运行时(函数):

def get_time(i,j):

调用func(i,j)# run。

print(time.time())

返回获取时间

@运行时

定义运行(I,j)

打印(“学生运行”)

#运行

运行(1,2)

可以发现这种写法对函数的多态性不是很好,可以写成:

#自动适应参数

导入时间

定义运行时(函数):

def get_time(*arg):

调用Func(*arg)# run

print(time.time())

返回获取时间

@运行时

定义运行(一)

打印(“学生1运行”)

@运行时

定义运行(I,j)

打印(“学生2运行”)

#运行

跑步(1)

运行(1,2)

再次,更通用的写法可以解决i=4这样的关键字参数输入问题:

#自动适应参数

导入时间

定义运行时(函数):

def get_time(*arg,**kwarg):

调用func(*arg,**kwarg)# run。

print(time.time())

返回获取时间

@运行时

定义运行(一)

打印(“学生1运行”)

@运行时

def run(*arg,**kwarg)

打印(“学生2运行”)

@运行时

定义运行()

打印(“无参数运行”)

#运行

跑步(1)

run(1,2,j=4)

运行()

关于Python高级用法的详细总结,本文到此结束。有关Python高级用法的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: