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