.pop() 从原始列表中删除元素

.pop() removes elements from original list

在创建问答游戏时,我发现了一个奇怪的发现,当在作为另一个列表副本的列表上使用 .pop() 方法时,原始列表的项目将被删除。 我写这个简单的代码是为了让你更好地理解我的意思:

myList = [1, 2, 3, 4]
myListDup = myList
print("{}\n{}".format(myListDup, myList))

for i in range(len(myList)):
    myListDup.pop()

print("{}\n{}".format(myListDup, myList))

如图所示,在使用 .pop() 从 myListDup 中删除所有元素后,myList 也为空(我知道还有其他方法可以删除元素,但我需要在我的原始文件中使用 .pop()程序) 有没有办法避免这种情况?

当您执行 myListDup = myList 时,这只是创建另一个对原始列表 myList 的引用 myListDup

试试这个:

myListDup = list(myList)

myListDup = myList[:]

这将创建列表的新副本,然后将其分配给 myListDup

使用copy(),

myList = [1, 2, 3, 4]
myListDup = myList.copy()
print("{}\n{}".format(myListDup, myList))

for i in range(len(myList)):
    myListDup.pop()

print("{}\n{}".format(myListDup, myList))

可以使用列表copy方法复制列表

喜欢,

mylist = [1, 2, 3, 4]
copy_list = my_list.copy()
my_list.pop()
print(my_list)
print(copy_list)

输出

[1,2,3]
[1,2,3,4]