Python生成器每次调用都会产生相同的值

时间:2013-03-05 06:09:33

标签: python generator

我希望这个生成器从列表中产生每个连续值的余弦值,但每次都得到相同的值。

import math     
angles = range(0,361,3)

# calculate x coords:    
def calc_x(angle_list):
    for a in angle_list:
        yield round(radius * cos(radians(a)), 3) 

每次调用都会产生相同的值:为什么会这样,我该如何解决?

>>>calc_x(angles).next()
5.0
>>>calc_x(angles).next()
5.0
>>>calc_x(angles).next()
5.0

1 个答案:

答案 0 :(得分:8)

每次拨打calc_x时,都会创建生成器。你需要做的是创建一个,然后继续使用它:

calc = calc_x(angles)
next(calc)
next(calc)
# etc.