Python 通过生成器方法从列表中顺序提取一项
下面是我的Python 通过生成器方法从列表中顺序提取一项,python,Python,下面是我的获取所有代理方法,该方法被认为可以一次性提供所有代理坐标: def fetch_all_agents(number_of_agents = None): agentList = [] agentConfig = configparser.ConfigParser() agentConfig.readfp(open(r'SwarmSimulator\configFile.txt')) random_option = agentConfig.get('A
获取所有代理方法,该方法被认为可以一次性提供所有代理坐标:
def fetch_all_agents(number_of_agents = None):
agentList = []
agentConfig = configparser.ConfigParser()
agentConfig.readfp(open(r'SwarmSimulator\configFile.txt'))
random_option = agentConfig.get('Agent Generation', "random_option")
if(random_option == "True"):
agentList = agentObj.generate_agents(number_of_agents)
elif(random_option == "False"):
with open(r"SwarmSimulator\agentListFile.txt") as f:
tempList = [list(ast.literal_eval(line)) for line in f]
pointObj = Point.Point()
for innerList in tempList:
pointObj.x = innerList[0]
pointObj.y = innerList[1]
agentObj = Agent.Agent(pointObj)
agentList.append(agentObj)
return agentList
我将计划另一种方法,我们将其命名为fetch\u single\u agent
,从列表中读取一个代理,即右代理在最后一个获取的代理旁边持有的代理。为了达到这个目标,考虑发电机是合理的
请您指导我为上述方法实现一个生成器驱动的版本,在这个版本中,正如我所解释的,可以按顺序从列表中获取代理吗?只需生成代理
for innerList in tempList:
pointObj.x = innerList[0]
pointObj.y = innerList[1]
agentObj = Agent.Agent(pointObj)
yield agentObj
agent_gen = fetch_all_agents(5)
for agent in agent_gen:
print(agent)
或者使用“下一步”获取一个代理:
agent_gen = fetch_all_agents(5)
ag_1 = next(agent_gen)
非常感谢。但是,我是否应该检查任何情况,在这种情况下,列表已经完全迭代,并且没有更多的代理要获取?…@Ordenador。当您迭代了templast
之后,将不会再有agentObj的
了。让步意味着您可以一次迭代获取代理,而不是创建完整的列表