2017-04-13 184 views
0

我想知道如何將只有一個元素的生成器轉換爲列表。例如,如果f是一個元素的生成器,列表(f)將引發「不可迭代」。如何解決此問題?提前致謝!蟒蛇生成器轉換

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

這將提高類型錯誤: 'INT' 對象不是可迭代,下面是OK

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) ]

+2

請顯示您遇到問題的代碼或從該代碼創建的[MCVE](http://stackoverflow.com/help/mcve)。 –

+0

您正在迭代元組列表。 – Pieter21

+1

你能發佈完整的堆棧跟蹤嗎? 'nx.adamic_adar_index(g,(0,1))'本身沒有錯誤嗎? – tdelaney

回答

1

如果我理解正確的話,這個:[(0, 1),(2,3)]是兩個元素(各爲兩個元素的元組),但(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