高级特性

 1 列表生成式

生成满足某种条件的列表,常与range()结合使用

例:[x*x for x in range(10) if 2*x ==1] 

表达式在最前面,可以生成两层循环

如:[m + n for m in 'ABC' for n in 'XYZ']

并且可以增加if语句进行判断限制

小知识:dict中dict.items()表示可以将字典变成可遍历的数组(k v);.lower()可将字符串更换为小写

2 生成器 generator

将列表用算法的方式储存,一边循环一边计算,不必生成完整的列表,从而节省空间

generator调用,next()通常用for循环来使用

①将列表生成器[]更改为()即为一个generator

1 def fib(max):
2     n,a,b = 0,0,1
3     while n<max:
4         print(b)
5         a,b = b,a+b
6         n += 1
7     return done  

②将函数中print(b)改为yield b即为一个generator

在成为generator的函数中每次调用next()时开始执行,遇到yield返回,重新开始执行时从上个yield结束处开始执行(常与循环配合使用)

yield 后面是返回的内容

(想要实现某个函数:用变量代入表达,逐个生成)

杨辉三角

def tringle():
    L = [1]
    n = 0
    while n<10:
        yield L
        L = [1] + [L[i-1] + L[i] for i in range(1,len(L))] + [1]
        n += 1

range(1,1) = []

3 迭代器

可迭代的对象(数据类型)称为Iterable

from collections import Iterable

isinstance({},Iterable) #判断对象是否为Iterable  对象可以是generator等

可以被next()函数调用并不断返回下一个值的对象称为Iterator(迭代器)

 

posted on 2018-03-26 22:19  lvgb  阅读(214)  评论(0编辑  收藏  举报

导航