本文介绍了Python生成器在每次调用时产生相同的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want this generator to yield the cosine of each successive value from a list, but am getting the same value each time.

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)

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

Yields the same value with each call: Why is this and how do I fix it?

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

推荐答案

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

Every time you call calc_x you create a new generator. What you need to do is create one and then keep using it:

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

这篇关于Python生成器在每次调用时产生相同的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-14 09:17