我是 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 的无限循环,但我不知道为什么。我还制作了一个只有两个节点的测试 sim_table,看看如果我尝试迭代到 ipython 中不存在的节点会发生什么:
In [10]: test_sim_table.next.next.my_parameter
AttributeError: 'NoneType' object has no attribute 'my_parameter'
所以我得到一个属性错误而不是 None,这是我所期望的。我错过了一些简单的东西吗?我对这一切都很陌生,所以可能。感谢您的任何帮助!