1.生成器
带有yield的函数被称为生成器
说白了,yield就是把一个函数变成一个generator,其返回值将是一个iterable,其实可以理解为生成器就是一个迭代器
在调用函数时,每次遇到一个yield会暂停并保存当前所有的运行信息,返回yield值,生成一个序列
def yd():
for i in range(5):
yield i
l = yd()
print(l)
print(next(l))
print(next(l))
print(next(l))
print(next(l))
<generator object yd at 0x0000000002B435E8>
0
1
2
3
2.迭代器
首先使用内建的工厂函数iter(iterable)来获取迭代器对象
然后可以用next()方法获取下一个迭代对象
a = [x for x in range(5)]
b = iter(a)
print(b)
for i in range(len(a)):
print(next(b))
<list_iterator object at 0x0000000002B3BB38>
0
1
2
3
4
3.过滤器
所谓过滤器,说白了就是一个筛选函数。
filter(function,iterable),其第一个参数为一个函数,可以使用匿名函数,第二个参数为一个可迭代对象
下面以筛选偶数为例:
def asd(x):
return x % 2 == 0
l = filter(asd,[1,2,3,4,5])
print(l)
print(list(l))
<filter object at 0x0000000002BA7048>
[2, 4]