列表生成式:
列表生成式:
li=[x+1 for x in range(10)]
列表生成式取值:
print(li)
生成器:
g = (x+1 for x in range(10))
1、什么叫列表生成器:
在python中一边计算一边生成值的机制,叫生成器。
2、列表生成器取值:
1、 通过next()函数取值——eg: next(g)
1、列表生成器可以通过next()函数取值,如果没有值就会跑出stopiteration 异常
2、通过for循环取值。
1、通过for 循环则不会报错
3、生成器也可以通过函数去实现
1、斐波拉契函数
def fib(max): n,a,b = 0,0,1 while n<max:
print(b) a,b=b,a+b n+=1 return 'done' print(fib(10))
2、将print 改为yield就成为带函数生成器
def fib(max): n,a,b = 0,0,1 while n<max: yield b a,b=b,a+b n+=1 return 'done' name = fib(10) print(name.__next__()) for i in fib(3): print(i)
3、带yield函数的生成器,通过next()生成值,遇到yield返回。
迭代器:
1、可迭代对象有两种:
1、一种是可以通过for循环的数据类型——包括list 、dict、set、tuple、str
2、一种是生成器,通过next()取值和带yield的函数生成器。
2、可以直接别for循环的成可迭代对象:iterable。
3、可以通过isinstance()来判断一个对象是否可迭代对象。
4、可以用iter()函数把可迭代对象(list、dict、str)转换成迭代器。