1. lambda表达式
# lambda表达式
# 匿名函数
# 例子
def add(a,b):
return a+b
add = lambda a,b: a+b
print(add(1,2))
# 3
# 求10以内数的平方
# 列表推导式:
print([i**2 for i in range(3)])
# [0, 1, 4]
# 普通函数:
def func(num):
return num**2
for i in map(func,range(3)):
print(i)
# 0
# 1
# 4
# lambda表达式
for i in map(lambda num: num**2, range(3)):print(i)
# 0
# 1
# 4
2.练习
# 1.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print(x)
# 24
# 2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'a':'c'},{'b':'d'}]
t1 = (('a'),('b'))
t2 = (('c'),('d'))
#答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
# [{'a': 'c'}, {'b': 'd'}]
#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
# [{'a': 'c'}, {'b': 'd'}]
#还可以这样写
print([{i:j} for i,j in zip(t1,t2)])
# [{'a': 'c'}, {'b': 'd'}]
3.递归函数
# 递归 就是自己调用自己
# 递归需要有一个停止的条件
def func():
print(1)
func()
func()
# print(1)
# RecursionError: maximum recursion depth exceeded while calling a Python object
# 超过了递归深度错误,没到1000 998
import sys #所有跟解释器打交道的
sys.setrecursionlimit(100000000)
def foo(n):
print(n)
n += 1
foo(n)
foo(1)
# 6! 6*5*4*3*2*1
# def fn(n):
# if n == 1:return 1
# return n*fn(n-1)
# print(fn(6))
# 720
# 递归 就是自己调用自己
# 递归需要有一个停止的条件
def fn(n):
if n == 1:return 1
return n*fn(n-1)
print(fn(6))
# 递:向下 归:向上
# 分析
def fn(6):
return 6*fn(5)
def fn(5):
return 5*fn(4)
def fn(4):
return 4*fn(3)
def fn(3):
return 3*fn(2)
def fn(2):
return 2*fn(1)
def fn(1):
if n == 1:return 1