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

Ben*_*mes 3 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) 
Run Code Online (Sandbox Code Playgroud)

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

>>>calc_x(angles).next()
5.0
>>>calc_x(angles).next()
5.0
>>>calc_x(angles).next()
5.0
Run Code Online (Sandbox Code Playgroud)

Bre*_*arn 8

每次打电话给calc_x你,都会创建一个新的发电机.你需要做的是创建一个,然后继续使用它:

calc = calc_x(angles)
next(calc)
next(calc)
# etc.
Run Code Online (Sandbox Code Playgroud)