usunięcie instancji obiektu na liście Pythona
Myślę, że to powinno zadziałać, ale dał mi błąd. Mam listę zawierającą obiekty klasynode
. Mam dwie różne listy
Kiedy znajdę określony węzeł wopen_list
Muszę go usunąć znode_list
. Wiem, że listy mają adresy do przechowywanych w nich obiektów
więc kiedy próbuję to zrobić
removed = open_list.pop(min_index)
node_list.remove(removed)
daje mi błąd, mówiąc
node_list.remove(removed)
ValueError: list.remove(x): x not in list
ale lista zawiera tylko adresy, które działają jak wskaźniki? powinien pasować do tych samych adresów. wydrukowałem adresremoved
i całośćnode_list
(na razie tylko 10 elementów nie boi się) wydrukuj: (ostatni element w node_list odpowiada adresowi usuniętego:
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>]
Dzięki
kontynuacja Qwięc chcę sprawdzić, czy węzeł, który chcę usunąć, istnieje na liście node_list. kiedy sprawdziłem kilka prostych funkcji listyhttp://docs.python.org/tutorial/datastructures.html
list.index(x)
iremove.index(x)
oba powodują błąd, jeśli elementu nie ma na liście. spowodowało to, że mój program przestał działać. aby ominąć to, czy mogę użyć tego oświadczenia przed.remove()
: node in node_list
Myślę żein
sprawdza, czy element jest częścią listy i zwraca wartość bool. po prostu podwójna kontrola dzięki