You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在for循环中依次返回多个值?yield与生成器是否适用?

生成器和yield完全符合你的需求

这正是生成器的核心优势——不用提前把所有结果存进列表或字典,而是按需逐个返回值,完美匹配你的需求。

先看你原代码的问题:你用了return,函数在第一次循环时就直接返回结果并终止了,所以永远只能拿到第一个值,后面的循环根本没机会执行。

把return换成yield,你的函数就变成了生成器,能依次返回所有循环的结果:

import random

def my_function():
    for i in range(3):
        # 把return换成yield,每次循环生成一个结果
        yield (dict(x=[[random.randint(0,10)]], y=[[random.randint(0,10)]]), 0)

调用生成器的方式有两种:

  • 用for循环遍历,自动依次取出每个值:
for result in my_function():
    print(result)
  • 用next()函数手动逐个获取,直到抛出StopIteration表示没有更多值了:
gen = my_function()
print(next(gen))  # 第一个结果
print(next(gen))  # 第二个结果
print(next(gen))  # 第三个结果

生成器的工作逻辑是:每次执行到yield时,函数会暂停并返回当前值,下次调用时从暂停的位置继续执行循环,直到循环结束。全程不会把所有结果存在内存里,完全满足你不想用列表/字典存储的要求。

内容的提问来源于stack exchange,提问作者The Governor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:40:58