python之 高级特性

01 递归函数:函数可以直接或间接调用函数本身

1. 计算n!

python之 高级特性

# 1. 在写递归函数时要有一个明确的结束条件;
# 2. 在递归时,问题规模要越来越小;
# 3. 递归函数效率不高,函数调用是通过栈的数据结构实现的,
# 4. 每调用依次,栈就会多一层,最多999层,否则会出现栈溢出。

2.二分法

python之 高级特性

python之 高级特性

02 迭代

•可以通过 for 循环来遍历这个 list 或 tuple,这种遍历我们称为迭代(Iteration)
•只要是可迭代对象,无论有无下标,都可以迭代,比如 dict就可以迭代:

方法是通过 collections 模块的 Iterable 类型判断

python之 高级特性

• 如果要显示[(1,2),(2,3),(3,4)]怎么实现迭代显示?

python之 高级特性

03 列表生成式

列表生成式是Python 内置的非常简单却强大的可以用来创建 list的生成式

1.生成 [1x1, 2x2, 3x3, ..., 7x7] ?

>  for 循环               python之 高级特性

>  列表生成式:    python之 高级特性

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):

python之 高级特性

python之 高级特性

# 通过yield实现单线程的并发运算
# 异步I/O模型epoll          http   nginx  tomcat
python之 高级特性

python之 高级特性