2013-11-07 2 views
0

I'am пытается использовать выражение выхода в питоне, чтобы напечатать номер: 0,2,4 .... с кодом, но я получаю как печать: <generator object some_f at 0x000000000252D240>Как использовать выражение выхода в питоне

код:

fn= lambda n: 2*n 

def Make_iterator(fn): 

    def some_f(): 
     i=0 
     yield fn(i) 
     i+=1 

    return some_f 

iterator = Make_iterator(fn) 
for i in range(4): 
    print(iterator()) 
+1

Зачем вам «Make_iterator» вообще? 'для i в диапазоне (4): print (fn (i))' будет печатать то, что вы хотите. – Kevin

+0

Вы продолжаете создавать новый объект-генератор. Loop * over * итератор. –

+0

Это упражнение. – synt

ответ

0

Я думаю, что это больше того, что вы ищете.

fn = lambda n: 2*n 

def Make_iterator(fn): 
    def my_iter(): 
     i=0 
     while i<10: 
      yield fn(i) 
      i+=1 
    return my_iter() 


for i in Make_iterator(): 
    print(i) 

Вам не нужны дополнительные функции обертки, и вы должны убедиться, что вы итерацию над итератора, а не просто называть его кучу раз.

+0

Хорошо выполняет свою работу, но мне удалось изменить только функцию Make_iterator. Так что я должен вернуть другую функцию из make_iterator – synt

+0

Кажется странным, но это должно было сделать это? –

+0

в конце концов, да :) – synt

Смежные вопросы