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

使用生成器展平嵌套列表时代码输出不符问题求助

问题分析与解决

哈哈,这个问题其实是个超常见的笔误,咱们来掰扯清楚:

原代码的核心错误

先看你贴的这段代码:

def flatten(nested):
    for sub in nested:
        for element in nested:  # 这里就是问题所在!
            yield element

内层循环你写的是遍历nested(整个原始列表),而不是当前外层循环拿到的sub(单个子列表)。这就导致:

  • 外层循环每迭代一次(比如第一次拿到[1,2]),内层循环就把整个nested的所有子列表都输出一遍;
  • 因为nested有3个子列表,外层循环会跑3次,所以最终就重复输出了3遍[1,2] [3,4] [5]。

修正后的代码

把内层循环的nested改成sub就行:

def flatten(nested):
    for sub in nested:
        for element in sub:  # 改成遍历当前子列表sub!
            yield element

nested = [[1,2],[3,4],[5]]
for num in flatten(nested):
    print(num, end=' ')

运行结果

修正后执行,输出就和书中完全一致了:

1 2 3 4 5

说白了就是内层循环找错了遍历对象,把整个大列表当成了要展开的子列表,改过来就搞定啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:26:38