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

为何print(x for x in [2,3,4,5] if x%2==0)输出生成器对象而非2和4?

问题原因与解决方案

你看到的<generator object <genexpr> at ...>是因为你写的x for x in [2,3,4,5] if x%2==0是生成器表达式——Python里一种惰性求值的迭代器,它不会立即计算出所有符合条件的元素,而是生成一个用来逐个产生元素的对象。直接打印这个对象,Python就会输出它的类型标识和内存地址,而不是里面的元素。

要得到预期的2和4,有几种写法:

  • 把生成器表达式转为列表,让它立即计算所有元素:

    print(list(x for x in [2,3,4,5] if x%2==0))
    

    输出:[2, 4]

  • 直接使用列表推导式(和上面效果一致):

    print([x for x in [2,3,4,5] if x%2==0])
    
  • 如果想逐个打印元素而非输出列表,可以遍历生成器:

    for num in (x for x in [2,3,4,5] if x%2==0):
        print(num)
    

    输出:

    2
    4
    

内容的提问来源于stack exchange,提问作者Akshat Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:54:17