我写了一个简单的脚本,如下所示:

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/

10-12 23:24