我写了一个简单的脚本,如下所示:
def simplefunc(listofcolumns):
mylist = listofcolumns
mylist.remove(1)
listofcolumns = [1,2,3,4,5,6]
simplefunc(listofcolumns)
print listofcolumns
我得到的输出是
[2,3,4,5,6]
。我的问题是,为什么不是[1,2,3,4,5,6]
?我怎样才能做到这一点这样我就能得到答案
[1,2,3,4,5,6]
? 最佳答案
当您编写mylist = listofcolumns时,您并没有创建新列表。您只是将变量mylist指向listofcolumns引用的相同列表。因此,您对mylist或listofcolumns所做的任何修改都是在修改该原始列表。如果要复制列表,以便可以修改它而又不会弄乱原始列表,则可以使用.copy()方法,如下所示:
def simplefunc(listofcolumns):
mylist = listofcolumns.copy()
mylist.remove(1)
或者,您可以按照Kasra的建议进行操作,而不必首先通过原始列表。
正如下面的注释所指出的,
.copy()
是Python 3的新功能。对于较旧的Python版本,您可以通过分割整个列表来完成相同的操作:def simplefunc(listofcolumns):
mylist =栏目列表[:]
mylist.remove(1)
关于python - Python:使用remove()按值从列表中删除元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28860074/