Возвращает несколько переменных в цикле, используя dict ()

Я отредактировал предыдущий раздел, что-то под строкой ниже ответили и устарели сейчас:

def foo(): x = dict() i = 0 while i < 10: x[i] = i*2 i + = 1 yield x[i] 

Как я могу вызвать конкретный экземпляр x [i] в ​​новой функции?



 def foo(): x = dict() i = 0 while i < 10: x[i] = i*2 i + = 1 return x[i] 

Я хочу, чтобы это возвращало x [1], x [2], x [3] … x [10], но прямо сейчас оно возвращает только конечную переменную. Причина, по которой я хочу это сделать, заключается в том, что в моем фактическом коде я не буду знать, сколько раз цикл будет повторяться

 def main(): variable = foo() print variable 

Я просто использую это, чтобы доказать себе, что он вернул некоторые значения

    Для этого рассмотрим использование выражения yield :

     def foo(): x = dict() i = 0 while i < 10: x[i] = x*2 i += 1 yield x[i] for i in foo(): print i 

    Как сказал @Ismail, он должен быть i += 1 не x += 1

    Кроме того, что должен делать x*2 ? Вы имели в виду i*2 ?

    Пример использования выражения yield

     def next_one(i,n): while i < n: yield i i += 1 >>> for i in next_one(1,10): ... print i ... 1 2 3 4 5 6 7 8 9 

    [Ответьте на вопрос об обновлении]

    Вы можете сделать это следующим образом, используя next() оператор next() :

     def next_one(i,n): while i < n: yield i i += 1 def main(variable): print next(variable) variable = next_one(1,10) main(variable) main(variable) main(variable) [OUTPUT] 1 2 3 

    Демо: http://repl.it/R6J