Python列表问题

ste*_*nos 3 python

我有python列表的问题.简化版是:

mylist1 = [...some items in a list...]

mylist2 = mylist1

mylist1.pop(i)

mylist.insert(i,item)

print(mylist1)

print(mylist2)
Run Code Online (Sandbox Code Playgroud)

问题是我希望mylist2保持mylist1的原始版本.这个问题有解决方法吗?

Nul*_*ion 5

您需要复制它,而不是分配mylist2mylist1它.这可以通过使用list构造函数来完成:

mylist2 = list(mylist)
Run Code Online (Sandbox Code Playgroud)

或通过copy.copy()(或copy.deepcopy()):

import copy
mylist2 = copy.copy(mylist)
Run Code Online (Sandbox Code Playgroud)

copy模块可用于复制其他对象(例如:dicts)并进行深层复制.
请参阅此Wiki页面,了解浅层和深层副本之间区别.

最后是切片语法:

mylist2 = mylist[:]
Run Code Online (Sandbox Code Playgroud)

但出于这里列出的原因,我个人避免使用这种相当神秘的语法.

  • `[:]`一旦你理解切片就完全按照你的意思行事,所以我不会把它称为神秘的.我宁愿避免迷恋这些形式,这只是个人偏好的问题. (2认同)