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里面的值?

5个回答

 for i in stack:
    for j in i:
            print(j)
weixin_40968491
weixin_40968491 666
2 年多之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问