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.7
和python-3.x
来标记问题,除非您询问两个版本之间的差异或类似内容。只需标记您正在使用的,由于print
语句,这显然是Py2。
【参考方案1】:
因为same_letter_list
和letter_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 不在列表中