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

Python lambda函数返回元组时报generator object错误如何解决

问题原因
  1. 你在print中传入的是生成器表达式(next(x ,t[i]) for t[i] in range(0,len(t))),print不会自动迭代生成器对象,只会直接打印其内存标识,也就是你看到的generator object输出。
  2. 原有逻辑本身存在多处错误:
    • next函数使用不符合场景,next用于从迭代器中取下一个值,你传入的第一个参数x是字符串,不是迭代器
    • 遍历逻辑错误,你需要遍历元组t的成员,不需要通过索引遍历、也不应该在for循环的左值位置给t[i]赋值
修复方案

调整遍历逻辑,逐一把t的元素和第一个入参x拼接为元组后打印即可,以下是可直接运行的修改后代码:

# 写法1:列表推导式批量执行打印
val_by_vec = lambda x, t=(): [print((x, item)) for item in t]

val_by_vec('Raj',((2,"Raj"),(3,"Amalu")))

也可以用生成器解包的写法实现相同效果:

# 写法2:生成器解包后指定分隔符打印
val_by_vec = lambda x, t=(): print(*((x, item) for item in t), sep='\n')

val_by_vec('Raj',((2,"Raj"),(3,"Amalu")))

两种写法运行后的输出都符合你的预期:

('Raj', (2, 'Raj'))
('Raj', (3, 'Amalu'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 13:54:03