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

在while循环中迭代递增列表内整数,结果不符合预期的问题

问题原因与解决方案

问题原因

Python中的列表是可变对象,当你执行my_end_list.append(my_start_list)时,并没有把当前my_start_list的内容复制一份添加进去,而是把这个列表对象的引用添加到了my_end_list中。循环过程中,你始终在修改同一个列表对象的第一个元素,所以my_end_list里的所有子列表实际上都是指向同一个列表的引用。当循环结束后,这个列表的状态是[6,2,3,4],因此输出时所有子列表都显示这个最终状态。

解决方案

解决的核心是每次添加时,创建原列表的副本而非直接添加引用,常见的实现方式有两种:

方式1:使用列表的copy()方法

my_start_list = [1, 2, 3, 4]
my_end_list = []

while my_start_list[0] != 6:
    my_start_list[0] += 1
    my_end_list.append(my_start_list.copy())  # 创建列表副本后添加

print(my_start_list)
print(my_end_list)

方式2:使用切片语法[:]生成副本

my_start_list = [1, 2, 3, 4]
my_end_list = []

while my_start_list[0] != 6:
    my_start_list[0] += 1
    my_end_list.append(my_start_list[:])  # 通过切片生成副本

print(my_start_list)
print(my_end_list)

运行上述任意一段代码,都会得到你期望的输出:

[6, 2, 3, 4]
[[2, 2, 3, 4], [3, 2, 3, 4], [4, 2, 3, 4], [5, 2, 3, 4], [6, 2, 3, 4]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:10:29