3

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

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
4

1 回答 1

8

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

calc = calc_x(angles)
next(calc)
next(calc)
# etc.
于 2013-03-05T06:10:46.173 回答