第七章 匿名函数、递归函数

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
一鼓作气,再而衰,三而竭。
原文地址:https://www.cnblogs.com/gongniue/p/8993828.html