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

Python for循环误把列表自身append进列表时,运行原理是什么?

运行逻辑与输出原因说明

实际执行流程

  • 执行secret_num = []时,会在内存中创建一个空的列表对象,Python中列表属于可变对象,变量secret_num存储的是这个列表的内存引用,而非列表的独立拷贝。
  • 循环总共执行4次,每次执行secret_num.append(secret_num)时,你并没有传入新生成的随机数,而是把secret_num自身的引用作为元素追加到了列表末尾:
    1. 第1次循环结束后,列表内容为[<secret_num自身引用>]
    2. 第2次循环结束后,列表内容为[<自身引用>, <自身引用>]
    3. 4次循环结束后,列表内就存储了4个指向自身的引用。

输出[[...], [...], [...], [...]]的原因

Python打印包含循环引用的对象时,为了避免陷入无限递归打印的死循环,会用...代替循环引用的递归部分。你看到的每一个[...]都是指向secret_num本身的引用,如果强行展开会出现无限套娃的结构[[[[[...]]]]],所以Python直接用省略号做了简化展示。

修正方案

把append的参数改为你生成的随机数变量num即可:

from random import choice

secret_num = []
for i in range(4):
    num = choice(range(10))
    secret_num.append(num)

print(secret_num)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 05:00:02