在 python 中使用生成器函数访问输出时出现问题

Issue in accessing the output using generator functions in python

我有下面的代码,我需要一次使用从 CSV 文件中检索到的数据的一个元组执行一些操作,然后在再次调用 step 函数时移动到下一个元组。我不明白如何使用 obs 变量。当我检索时,我得到一个生成器对象。非常感谢帮助。

  def get_state(self):
    def createGenerator(self):
     obs_data = [tuple(x) for x in self.data[['value_1']], 
           'value_2']].to_numpy()]
     for obs in obs_data:
        yield obs

  def step(self):
    ob = self.get_state()
  1. 您没有在外部方法中返回任何内容,仅返回内部生成器函数。
  2. 您永远不会调用内部函数来实际创建生成器。

我不能确切地说出你要的是什么,但这里的代码将 运行:

def get_state(self):
    def createGenerator():
       obs_data = [tuple(x) for x in self.data[['value_1']], 
           'value_2']].to_numpy()]
       for obs in obs_data:
          yield obs
    if self.gen is None:
        self.gen = createGenerator()
    return next(self.gen)

def step(self):
    ob = self.get_state()

您应该使用 next() 来获取值,或者您可以使用 for 循环并将生成器视为可迭代对象。