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