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 に答える