python生成器输出值?

 >>> stack = [(v for u, v in G.edges('130'))]
>>> stack
[<generator object <genexpr> at 0x09E6F120>]
>>> for i in stack:
    print i


<generator object <genexpr> at 0x09E6F120>
>>> type(stack)
<type 'list'>
>>> 

为什么不能输出stack里面的值,如何才能输出stack里面的值?

 for i in stack:
    for j in i:
            print(j)

for i in stack:
for j in i:
print(j)

生成器对象,一般用 () ,比如 aa = (v for u, v in G.edges('130')) ,生成器对象只有一个next方法,next(aa) ;或者使用for循环

而作者 stack = [(v for u, v in G.edges('130'))] ,这个是将生成器对象放入到列表中,当对stack进行循环的时候,取出来的是列表中的元素,也就是生成器对象,如果想取值,也可以用 for i in stack[0]: print(i)

试试这个方案可以不?
stack = (v for u, v in G.edges('130')) #将stack定义为一个generator
list(stack) #根据你的意思,将其转化为list

D:\Python\python\python-3.6.1\Python36-64\python.exe

create counter

2