私はPythonのかなり新しいプログラマーで、リンクされたリストを反復処理するのに問題があります。これは、私が使用している他のソフトウェア (私には変更する能力がありません) の出力として与えられたリンク リストであり、アクセスする必要があるパラメーター (参照用にここでは my_parameter と呼ばれています) が含まれています。ここでの参照用に、リンクされたリストに sim_table という名前を付けました。反復を試みるために使用しているコードのスニペットは次のとおりです。
sim_table_rows = []
def iterate_linked_list(node):
while node is not None:
sim_table_rows.append(node.my_parameter)
node = node.next
iterate_linked_list(sim_table)
これは、すべてをテストする場所である ipython で正常に動作しますが、ipython の外部でスクリプトを実行しようとすると、セグメンテーション違反が発生し続けます: 11. 問題を診断するために、追加する代わりに出力を印刷してみました:
def iterate_linked_list(node):
while node is not None:
print node.my_parameter
node = node.next
iterate_linked_list(sim_table)
私が得た出力は、リストの最後のノードからの my_parameter の無限ループですが、その理由はわかりません。また、ipython で存在しないノードを反復しようとするとどうなるかを確認するために、ノードが 2 つしかないテスト sim_table を作成しました。
In [10]: test_sim_table.next.next.my_parameter
AttributeError: 'NoneType' object has no attribute 'my_parameter'
したがって、None の代わりに属性エラーが発生します。これは、私が期待していたものです。簡単なものがありませんか?私はこれらすべてにかなり慣れていないので、おそらく. 助けてくれてありがとう!