我认为这应该可行,但它给了我一个错误。我有一个包含 class 对象的列表node
。我有两个不同的列表
- 开放列表
- node_list.(它们在纵向上不一样,排序方式)
当我在 中找到特定节点时,open_list
我需要将其从node_list
. 我知道这些列表具有存储在其中的对象的地址
所以当我尝试做
removed = open_list.pop(min_index)
node_list.remove(removed)
它给了我一个错误说
node_list.remove(removed)
ValueError: list.remove(x): x not in list
但是列表只包含像指针一样的地址,对吗?它应该匹配相同的地址。我打印出地址removed
和整个node_list
(现在只有 10 项不要害怕)打印出:(node_list 中的最后一项与删除的地址匹配:
removed: <__main__.node instance at 0x0124A440>
node_list: [<__main__.node instance at 0x01246E90>, <__main__.node instance at 0x01246EE0>, <__main__.node instance at 0x0124A300>, <__main__.node instance at 0x0124A328>, <__main__.node instance at 0x0124A350>, <__main__.node instance at 0x0124A378>, <__main__.node instance at 0x0124A3A0>, <__main__.node instance at 0x0124A3C8>, <__main__.node instance at 0x0124A3F0>, <__main__.node instance at 0x0124A418>, <__main__.node instance at 0x0124A440>]
谢谢
后续问
所以我想检查我要删除的节点是否存在于 node_list 中。当我在http://docs.python.org/tutorial/datastructures.html上查找一些简单的列表函数时
list.index(x)
remove.index(x)
如果元素不在列表中,两者都会出错。这导致我的程序停止运行。为了绕过这个,我可以在以下语句之前使用这个语句.remove()
:node in node_list
我认为in
检查一个元素是否是列表的一部分并返回一个布尔值。只是仔细检查谢谢,