>>> g =((i+2)**2for i inrange(10))#创建生成器对象>>> g
<generator object<genexpr> at 0x0000000003095200>>>>tuple(g)#将生成器对象转换为元组(4,9,16,25,36,49,64,81,100,121)>>>list(g)#生成器对象已遍历结束,没有元素了[]>>> g =((i+2)**2for i inrange(10))#重新创建生成器对象>>> g.__next__()#使用生成器对象的__next__()方法获取元素4>>> g.__next__()#获取下一个元素9>>>next(g)#使用函数next()获取生成器对象中的元素16
使用for循环直接迭代生成器对象中的元素:
>>> g =((i+2)**2for i inrange(10))>>>for item in g:#使用循环直接遍历生成器对象中的元素print(item, end=' ')49162536496481100121
访问过的元素不再存在:
>>> x =filter(None,range(20))#filter对象也具有类似的特点>>>5in x
True>>>2in x #不可再次访问已访问过的元素(访问完的1-5已经不存在了)False>>>8in x
False#不可再次访问已访问过的元素>>> x =map(str,range(20))#map对象也具有类似的特点>>>'0'in x
True>>>'0'in x #不可再次访问已访问过的元素False