2017-04-13 16 views
0

私はどのようにリストに1つの要素だけのジェネレータを変換するか知っていると思います。例えば、fが要素を1つ持つジェネレータである場合、list(f)は "not iterable"を発生させます。 ?前もって感謝します!Pythonジェネレータ変換

nx.adamic_adar_index(g, (0, 1)) 
list(nx.adamic_adar_index(g, (0, 1))) 

これはTypeErrorを送出します。 'INT' オブジェクトが反復可能ではないが、以下が

nx.adamic_adar_index(g, [(0, 1),(2,3)]) 
list(nx.adamic_adar_index(g, [(0, 1),(2,3)])) 

結果は[(0、1、2.3878841007006875)、(2、3、0.9282626109897467)OKであります]

+2

問題のあるコードを表示するか、そのコードから作成した[MCVE](http://stackoverflow.com/help/mcve)を表示してください。 –

+0

あなたはタプルのリストを反復しています。 – Pieter21

+1

完全なスタックトレースを投稿できますか? 'nx.adamic_adar_index(g、(0、1))'自体にそのエラーはありませんか? – tdelaney

答えて

1

私が正しく理解していれば、この:[(0, 1),(2,3)]は二つの要素(それぞれが2つの要素のタプルである)のリストですが、(0, 1)が単一の要素である、それはあなたが単一のリストである必要がある可能性があり要素([(0, 1)]など)?

私は推測したい:

list(nx.adamic_adar_index(g, [(0, 1)])) 

はあなたがやりたいだろう。

0

これでもかまいませんか?

ジェネレータは、リストされると評価する必要があります。ジェネレータ自体はリストできません。

>>> def g(): 
...  yield 1 
...  
>>> list(g()) 
[1] 
>>> list(g) 
Traceback (most recent call last): 
    File "<interactive input>", line 1, in <module> 
TypeError: 'function' object is not iterable 
関連する問題