2016-01-14 5 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 (список (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) 
Смежные вопросы