python-知识点的复习2
总结:
1、什么是生成器?
在python 中,边循环边计算的机制,称为生成器。
2、什么是迭代器?
1、可以被next()函数调用,并不断生成新的值的对象称迭代器。
2、包括可以被next()函数调用的生成器和带yield关键字生成器函数。
3、它表示一个惰性计算的数列。
3、什么是可迭代对象Iterable
?
可以被for循环的对象称iterable(可迭代对象)
1、集合数据类型:
list、dict、set、tuple、str
2、生成器:
next()函数调用的生成器 和带yield关键字的生成器函数。
3、用isinstrance()判断一个对象是否可迭代对象(Iterator)。
4、用iter()函数把可迭代对象(list、dict、str等)变成迭代器(iterator)。
-------------------------------------------END----------------------------------------------------
列表生成式:
列表生成式:
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)转换成迭代器。