首页 > 解决方案 > 您可以将列表存储到while循环内的列表中吗?

问题描述

我目前正在了解列表和 while 循环如何在 Python 中工作。不幸的是,我对我的代码有点困惑。

main_list = []
list_1 = [1, 2]
list_2 = [3, 4]

i = 0
n = 2

while i != n:

    number = int(input("Insert a number: "))

    list_1.append(number)
    main_list.append(list_1)
    main_list.append(list_2)

    i += 1

print(main_list)

为什么我得到这个输出,

>> Insert a number: 2
>> Insert a number: 3
>> [[1, 2, 2, 3], [3, 4], [1, 2, 2, 3], [3, 4]]

而不是这个?

>> Insert a number: 2
>> Insert a number: 3
>> [[1, 2, 2], [3, 4], [1, 2, 2, 3], [3, 4]]

如果有人能给我解释一下,我将不胜感激,谢谢。

标签: pythonlistloopswhile-loop

解决方案


那是因为您正在list_1while 循环内部进行修改并将其附加到main_list. 但是,当您追加时,只会将 的引用list_1 添加到main_list.

现在最后的list_1内容是[1,2,2,3]. 并且由于main_list包含对 的引用list_1main_list因此显示其当前内容list_1[1,2,2,3]

为避免这种情况,您必须附加 的内容list_1而不是对 的引用main_list。有很多方法可以做到这一点。

其中之一是,

main_list.append(list(list_1))

将您现有的行更改为此。

请阅读此内容 -浅拷贝与深拷贝


推荐阅读