removendo uma instância de um objeto na lista python
Eu acho que isso deve funcionar, mas está me dando um erro. Eu tenho uma lista que contém objetos de classenode
. Eu tenho duas listas diferentes
Quando eu encontrar um nó específico noopen_list
Preciso deletá-lo donode_list
. Eu sei que as listas têm endereços para os objetos armazenados neles
então quando eu tento fazer
removed = open_list.pop(min_index)
node_list.remove(removed)
isso me dá um erro dizendo
node_list.remove(removed)
ValueError: list.remove(x): x not in list
mas a lista contém apenas endereços que agem como ponteiros, certo? ele deve combinar os mesmos endereços. imprimi o endereço deremoved
e o todonode_list
(apenas 10 itens por enquanto não temam) imprimir: (o último item na lista de nós corresponde ao endereço de removido:
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>]
obrigado
follow-up Qentão eu quero verificar se o nó que eu quero remover existe na node_list. quando eu olhei algumas funções de lista simples emhttp://docs.python.org/tutorial/datastructures.html
list.index(x)
eremove.index(x)
ambos dão um erro se o elemento não estiver na lista. Isso fez com que meu programa parasse de funcionar. para ignorar isso, posso usar essa declaração antes do.remove()
: node in node_list
Eu acho que oin
verifica se um elemento faz parte de uma lista e retorna um bool. apenas dando um duplo obrigado,