Python之匿名函数

匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数,只需用表达式而无需申明。

lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方

常规版本:

def fun(x,y)
    return x*y

lambda版本:

r = lambda x,y:x*y
print r(2,3)
格式:
  lambda 参数列表:return [表达式] 变量
  由于lambda返回的是函数对象(构建的是一个函数对象),所以需要定义一个变量去接收
 
匿名函数优点:
  - 使用Python写一些脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
  - 对于一些抽象的,不会被别的地方再重复使用的函数,有时候函数起个名字也是个难题,使用lambda不需要考虑命名的问题
  - 使用lambda在某些时候然后代码更容易理解
 
搭配reduce的应用
  reduce(fun,list)
    reduce依次把list中的数字赋值给fun进行计算
    注意fun必须是连个数字间的运算,list必须是整型数字
 
打印列表元素的平方
for i in map(lambda x:x*x,[0,1,2,3,4]):
    print(i)     #0 1 4 9 16

 

筛选长度大于3的字符串

l1 = ['232','31231','21']
func = lambda x:len(x)>3
for i in filter(func,l1):
    print(i)

 

现在有两元祖 (('a'),('b')),(('c'),('d')),请使用 python 中的匿名函数生成列表[{'a':'c'},{'b':'d'}]

func = lambda x,y:[{x[0]:y[0]},{x[1]:y[1]}]
tu1 =(('a'),('b'))
tu2 = (('c'),('d'))
l = func(tu1,tu2)
print(l)    #[{'a': 'c'}, {'b': 'd'}]

 

理解%r和%s的区别

%r会重现所表达的对象,%s会将所有转成字符串

eg1:

print('i am %s years old' % 22)
print('i am %r years old' % 22)
>>>>>>>>>>>>>>>>>>>>>>>>
i am 22 years old
i am 22 years old

 

eg2:

t = 'i am %d years old' % 22
print('i said %s' % t)
print('i said %r' % t)
>>>>>>>>>>>>>>>>>>>>>>>>
i said i am 22 years old
i said 'i am 22 years old'

 

eg3:

import datetime
d = datetime.date.today()
print('%s' % d)
print('%r' % d)
>>>>>>>>>>>>>>>>>>>>>>>>
2017-6-26
datetime.date(2017, 6, 26)

 

sorted与.sort()区别

Sorted(效率高,用C语言写的) 返回的是列表,

排序完形成新列表,并返回

list.sort()改变原列表

 

posted @ 2018-02-08 23:37  熊猫的黑白照  阅读(386)  评论(0编辑  收藏  举报