удаление экземпляра объекта в списке Python
Я думаю, что это должно работать, но это дает мне ошибку.
У меня есть список, который содержит объекты классаnode
, У меня есть два разных списка
Когда я нахожу конкретный узел в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>]
Спасибо
follow-up Qпоэтому я хочу проверить, существует ли узел, который я хочу удалить, в node_list. когда я посмотрел несколько простых функций спискаhttp://docs.python.org/tutorial/datastructures.html
list.index(x)
а такжеremove.index(x)
оба выдают ошибку, если элемент отсутствует в списке. это заставило мою программу перестать работать.
чтобы обойти это, могу ли я использовать это утверждение до того, как.remove()
: node in node_list
я думаюin
проверяет, является ли элемент частью списка, и возвращает bool.
просто двойная проверка
Спасибо,