生成器补充
def test(): for i in range(4): yield i t=test() t1=(i for i in t) #t1 就是把t这个生成器再次用表达式生成t1生成器
def test(): for i in range(4): yield i t=test() #这个生成器里还没有值 只有执行了里面才有值 不next就没值 for i in t: print(i) t1=(i for i in t) print(list(t1)) #可以用list获取生成器里的值
0
1
2
3
[]      #为什么会空?因为print(i)的时候已经遍历了所有元素 第二次打印已经没有运行了
def test(): for i in range(4): yield i t=test() t1=(i for i in t) # 获取内存地址 因为没有打印所以没有遍历 有打印了才是遍历 t2=(i for i in t1) # 获取内存地址 print(list(t1)) #遍历t1 t1的值来自于t 而t没有遍历过 所以取t1的值等于取t的值 print(list(t2)) #遍历t2 t2的值来自于t1 但是t1已经遍历过了
[0, 1, 2, 3]
[]
                    
                
                
            
        
浙公网安备 33010602011771号