(有任何问题欢迎留言或私聊 && 欢迎交流讨论哦
闲话:
老是没看懂lambda是个啥东西,每次都要去百度。
干脆自己写一个以后看自己哒。
引入:
def F(x):
return x*x
f = lambda x: x * x
def G(x, y):
return x+y
g = lambda x, y: x + y
print( g(f(3), 4) ) #输出13
print( G(F(3), 4) ) #输出13
应该有个简单的印象了吧~
lambda表达式就是简化函数的。但是仅当函数只有一行的时候
这一行能做多少事情,就看个人能力了~
栗子:
lambda x: x*x
此表达式相当于有一个函数,它的参数是x
,然后返回值是x*x
lambda x, y: x+y
此表达式相当于有一个函数,它的参数是x, y
,然后返回值是x+y
一段代码:
def quadratic(a, b, c):
return lambda x: a*x*x + b*x + c
f = quadratic(1, -1, 2)
#三种形式答案一样
print( f(5) )
print( quadratic(1, -1, 2)(5) )
print( (lambda x: 1*x*x + -1*x + 2)(5) )
这里 f 就是一个函数: f(x) = a*x^2 + b*x + c
quadratic
返回的是一个lambda表达式,后面跟着的括号里的内容就是参数!
又一段代码:
countries = []
file = open("country_zw.csv","r",encoding='UTF-8')
for line in file:
line = line.strip() #去掉空格
ar = line.split(',') #分割
name = ar[1]
capt = ar[3]
popu = int(ar[4])
countries.append( (name, capt, popu) )
countries.sort(key = lambda country:country[2]) #排序参数
for country in countries:
print(country)
提一下:
python3 取消了cmp 参数,参考:https://www.zhihu.com/question/30389643?sort=created
#元组内(e1, e2, e3)的优先级排列为: e1 > e2 > e3
sorted(s, key=lambda x: (x.isdigit(),x.isdigit() and int(x) % 2 == 0,x.isupper(),x)
#input: 'asdf234GDSdsf23'
#output: 'addffssDGS33224'