首页 > 解决方案 > Python - 将列表附加到列表

问题描述

我正在尝试解决有关列表的问题。对于输出,我想将所有列表添加到一个最终列表 ( ans)。

但是当我附加第二个列表时,第一个列表等于第二个。我不明白为什么会这样。

ls = list()     
ans = []
n = int(input())

for _ in range(n):

    cmd = input()
    if cmd == "insert":
        i, e = map(int, input().split())
        ls.insert(i, e)
    elif cmd == "print":
        ans.append(ls)

    elif cmd == "remove":
        e = int(input())
        ls.remove(e)
    elif cmd =="append":
        e = int(input())
        ls.append(e)
    elif cmd == "sort":
        ls.sort()
    elif cmd == "pop":
        ls.pop()
    elif cmd == "reverse":
        ls.reverse()
    else:
        print("invalid input") 


print(ans)      

输入:

12
insert
0 5
insert
1 10
insert
0 6
print
remove
6
append
9
append
1
sort
print
pop
reverse
print

标签: pythonlistappend

解决方案


当您将列表附加到列表中时,即ans.append(ls)您实际上是通过引用传递它。因此,当您在其中追加ls3 次时ans,它将追加相同的ls.

如果您不想通过引用附加,则应提供该列表的副本。在更复杂的列表中,您可能应该进行深度复制。

这是附加副本:

ans.append(ls.copy())

希望能帮助到你!


推荐阅读