2013-03-05 92 views
3

我希望此生成器從列表中產生每個連續值的餘弦值,但每次都獲得相同的值。Python生成器每次調用產生相同的值

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 

回答

8

每次通話時間calc_x創建發生器。你需要做的是創建一個,然後繼續使用它:

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

非常好,謝謝。我使用while循環查看示例時絆倒了。 – 2013-03-05 06:25:36

相關問題