这个问题在这里已有答案:
我正在尝试从列表nm中删除项目“a”但不从列表名称中删除,但有些删除函数会从列表中删除它。请帮忙!
我也尝试过使用del函数,但没有成功。
>>> name=["a","b","c"]
>>> nm=name
>>> nm.remove("a")
>>> nm`enter code here`
['b', 'c']
>>> name
['b', 'c']
我期待名单在最后保留为[“a”,“b”,“c”]。
这是因为name
是对列表的引用。 nm=name
只是创建一个指向同一列表的新变量。您需要显式复制列表,以便在内存中有两个,如果您希望它们不同。
更改
nm=name
至
nm=name[:]
这告诉python执行列表的浅表副本而不是复制引用。有很多方法可以做到这一点,我认为这是最简单的(对于列表),因为它涉及最少的编辑和没有导入。如果要为其他数据类型实现相同的功能,还可以使用Python标准库中的copy
模块。