今天带朋友们学习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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。