Python的lambda表达式学习日记

(有任何问题欢迎留言或私聊 && 欢迎交流讨论哦

闲话:

 老是没看懂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'

猜你喜欢

转载自blog.csdn.net/qq_39599067/article/details/80977074