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

Python列表嵌套追加异常:为何最终得到[[], []]而非预期结果?

Python列表引用问题分析及解决

你的问题核心在于Python中列表是可变对象,当你执行list2.append(list1)时,并没有把list1的内容复制一份添加到list2里,而是把list1这个对象的引用(相当于指向它的指针)加进了list2。

循环里每次最后调用list1.clear(),都是在清空同一个列表对象,而list2里的两个元素都是指向这个对象的引用,所以最后输出时,这个对象已经被清空,list2自然就变成了[[], []]。

两种解决方法:

  1. 每次循环新建列表对象
    把list1的定义放到循环内部,让每次循环都创建一个全新的列表,这样添加到list2的就是不同的对象:
list2 = []

for _ in range(int(input())):
    list1 = []
    name = input()
    score = float(input())
    list1.append(name)
    list1.append(score)
    list2.append(list1)

print(list2)
  1. 添加列表的副本到list2
    在append时,添加list1的副本而不是原对象的引用,这样后续清空原list1不会影响已经添加到list2的内容:
list1 = []
list2 = []

for _ in range(int(input())):
    name = input()
    score = float(input())
    list1.append(name)
    list1.append(score)
    list2.append(list1.copy())  # 或者用list1[:]来生成副本
    list1.clear()

print(list2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:01:40