2016-01-14 57 views
1

的輸出。當我運行代碼我得到以下輸出 如何打印生成

如何打印的打印輸出?

def firstn(n): 
    num=0 
    while num < n: 
     yield num 
     num=num+1 


sum_of_first_n=sum(firstn(10)) 
print(firstn(3)) 
+3

'print(list(firstn(3)))' – Andrey

+2

歡迎來到SO。你是否介意正確地格式化你的代碼,以便其他人也可以從中受益? – glglgl

回答

1

一般:

print(list(firstn(n))) 

要確保你的發電機是不是無限的。如果您不確定,請使用以下內容:

import itertools as it 

print(list(it.islice(firstn(n), 100))) 

可以打印最多100個元素。

0

這樣做有不同的方式,但基本上你必須遍歷迭代器。最簡單的方法可能是使用列表理解:

print(list(firstn(3))) 

,但如果你願意,你可以寫一個for循環來做到這一點(和得到它FX每行一個元素):

for e in firstn(3): 
    print(e) 

一但應該請注意,迭代通過生成器會消耗它,如果你沒有檢索新生成器的方法(例如,如果你將生成器作爲函數調用的參數),則必須將值fx存儲在數組中:

l = list(firstn(3)) 

for e in l: 
    print(e) 

for e in l: 
    do_something(e)