これでうまくいくと思いますが、エラーが発生します。class のオブジェクトを含むリストがありますnode
。私は2つの異なるリストを持っています
- open_list
- 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>]
ありがとう
フォローアップQ
削除したいノードがnode_listに存在するかどうかを確認したいと思います。http://docs.python.org/tutorial/datastructures.htmlで簡単なリスト関数を調べたとき
list.index(x)
要素がリストにない場合、remove.index(x)
両方ともエラーになります。これにより、プログラムの実行が停止しました。これを回避するには、次のステートメントの前にこのステートメントを使用できますか.remove()
:要素がリストの一部であり、bool を返すかどうかをチェックするnode in node_list
と思います。in
再確認するだけです、ありがとう