.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]
在创建问答游戏时,我发现了一个奇怪的发现,当在作为另一个列表副本的列表上使用 .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]