第二十一讲lambda表达式(匿名函数)
1. 基本语法
lambdax : 2 *x + 1
等同于
def xxx(x):
return x : 2 *x +1
2. 复杂的内置函数
a) filter(function orNone, sequence)
返回的sequence为True的值。如果function是None,返回参数为true
的值。如果序列是一个元组或字符串,返回相同的类型,否则返回一个列表list。
filter(lambda x:x%2,range(10))
输出:[1, 3, 5,7, 9]
list(filter(None,[1,0,False,True]))
输出:[1, True]
b) map function, sequence[,sequence, ...] ——> list
返回一个使用sequence调用function的结果。如果给出多个sequence,就返回调用结果的列表。当所有sequence不具有相同长度时,使用None替代缺失的值。如果function是None,则直接返回sequence的列表
map(lambda x:x * 2,range(10))
输出:[0, 2, 4,6, 8, 10, 12, 14, 16, 18]
第二十二讲 递归
1. 计算阶层:
defjc(x):
if(x!=1):
returnx*jc(x-1)
else:
return(x)
第二十三讲 递归进阶
1. 斐波那契数列递归实现:
1 n=1
F(n) 1 n=2
f(n-1)+f(n-2) n>2
越来越接近于黄金分割比!
def f(x):
if x==1 or x==2:
return 1
else:
returnf(x-1)+f(x-2)
如果使用迭代时间会快很多
第二十四讲 递归汉诺塔
1. 代码实现:
defhanoi(n,x,y,z):
if(n == 1):
print (x,'-->',z)
else:
hanoi(n-1,x,z,y)#将n-1个移动到y上
print(x,'-->',z)#将最底下最后一个盘子从x移动到z上
hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
n=int(input('汉诺塔层数:'))
hanoi(n,'x','y','z')
第二十五讲 字典
1. 创建字典(映射类型)
Dic1={‘111’:‘aaaaa’,’2222’:’bbbbbbb’,’3333’:‘cccccccc’}
Dic1=dict(((‘111’,’aaaaa’),(‘2222’,‘bbbbbbbb’),(‘3333’,’ccccccc’)))
Dic1=dict(111=’aaaaa’,22222=’bbbbbbbbbb’)
2. 调用字典:
Dic1[‘111’]
返回‘aaaaa’