01 递归函数:函数可以直接或间接调用函数本身
1. 计算n!
# 1. 在写递归函数时要有一个明确的结束条件; # 2. 在递归时,问题规模要越来越小; # 3. 递归函数效率不高,函数调用是通过栈的数据结构实现的, # 4. 每调用依次,栈就会多一层,最多999层,否则会出现栈溢出。
2.二分法
02 迭代
•可以通过 for 循环来遍历这个 list 或 tuple,这种遍历我们称为迭代(Iteration) •只要是可迭代对象,无论有无下标,都可以迭代,比如 dict就可以迭代:
•方法是通过 collections 模块的 Iterable 类型判断
• 如果要显示[(1,2),(2,3),(3,4)]怎么实现迭代显示?
03 列表生成式
列表生成式是Python 内置的非常简单却强大的可以用来创建 list的生成式
1.生成 [1x1, 2x2, 3x3, ..., 7x7] ?
> for 循环
> 列表生成式:
2.0~20内所有偶数的平方
print [ i*i for i in range(0,21) if i % 2 == 0] 3.返回'123' 'ABC'两个字符串的结合(['1A','1B','1C','2A','2B','2C','3A','3B','3C']) print [i+j for i in '123' for j in 'ABC'] 4. 遍历字典 d ={'name':'haha','age':'14'} print [ k+'='+v for k,v in d.items()]
04 生成器
生成器generator 1). 列表生成式受到内存的限制,列表容量是有限的; 2). 列表生成式如果只需要前几个元素,浪费内存空间。 3). 访问生成式: - for循环 - g.next()方法 l = [i for i in range(1000)] # 列表生成式 g = (i for i in range(1000)) # 生成器 g.next() for i in g: print i
1.定义一函数fib,实现斐波那契数列(Fibonicci):
# 通过yield实现单线程的并发运算 # 异步I/O模型epoll http nginx tomcat