list.remove(x) 删除超过此列表中的对象[重复]

Posted

技术标签:

【中文标题】list.remove(x) 删除超过此列表中的对象[重复]【英文标题】:list.remove(x) removes objects in more than this list [duplicate] 【发布时间】:2017-01-28 18:53:40 【问题描述】:

当我想复制我的列表并尝试从一个列表中删除一个项目时,它也会在另一个列表中消失。你能给我一个理由吗?以及如何从一个列表中删除?

letter_list = ["A","B","C"]
same_letter_list = letter_list

print same_letter_list
print letter_list

same_letter_list.remove("B")

print same_letter_list
print letter_list

我的输出是:

['A', 'B', 'C']
['A', 'B', 'C']
['A', 'C']
['A', 'C']

我是编程新手。 感谢您的帮助!

【问题讨论】:

same_letter_list = letter_list 使same_letter_list 引用相同的列表。这里只有 1 个列表,有两个名称。 这似乎与其他问题非常相似:***.com/questions/8744113/… 如果您是 Python 新手,为什么要从 Python 2 开始?从 Python 3 开始,Stack Overflow Python community 绝大多数是 recommends,python.org itself 也是如此。第 3 版是该语言的现在和未来,而第 2 版是过去。在先学习 2 的过程中,您会养成许多在学习 3 时需要纠正的坏习惯(最终您需要这样做),因此最好先从 3 开始,然后学习 2 中的差异稍后。 另外,请不要同时使用python-2.7python-3.x 来标记问题,除非您询问两个版本之间的差异或类似内容。只需标记您正在使用的,由于print 语句,这显然是Py2。 【参考方案1】:

因为same_letter_listletter_list 是同一个列表。它引用了相同的内存。

如果你想把它们分开,复制一份

same_letter_list = letter_list.copy()

【讨论】:

【参考方案2】:

列表是一样的。您可以将其切片到另一个变量,以便它们不同。像这样:

letter_list = ["A","B","C"]
same_letter_list = letter_list[:]

print same_letter_list
print letter_list

same_letter_list.remove("B")

print same_letter_list
print letter_list

【讨论】:

【参考方案3】:

基本上letter_list和same_letter_list是同一个地址

>>> letter_list = ["A","B","C"]
... same_letter_list = letter_list
... 
>>> id(same_letter_list)
1316298424
>>> id(letter_list)
1316298424

它会给出一个新地址

diff_letter_list = letter_list[:]
id(diff_letter_list)
1307621296

【讨论】:

以上是关于list.remove(x) 删除超过此列表中的对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取ValueError:list.remove(x):x尝试从列表中删除值时不在列表中

错误:list.remove(x):x 不在列表中,我不明白为啥

pymssql.connect 错误 list.remove(x): x 不在列表中

列表 List remove()方法

在颤动中使用 list.remove(element) 时未在列表中删除项目

Python中的列表元祖字典