我正在尝试用Python实现Hierholzers算法,在有向图中找到欧拉循环.你可以在这里找到一个算法的例子,Hierholzers Algorithm.
就例子而言,我刚刚完成了第五阶段,换句话说,我的算法产生了一个级别列表,其中每个级别代表图形中的一个游览.
list_of_levels = [[0, 3, 2, 1, 0], [2, 6, 5, 4, 2], [6, 8, 7, 9, 6]]
要完成此过程,我需要将这些列表组合在一起,方法是将每个级别插入其上一级的适当位置.例如,上面列表的步骤是
步骤1 list_of_levels = [[0, 3, 2, 1, 0], [2, 6, 8, 7, 9, 6, 5, 4, 2]]
步骤2list_of_levels = [[0, 3, 2, 6, 8, 7, 9, 6, 5, 4, 2, 1, 0]]
到目前为止,我已经尝试了Python的insert(index,obj)方法,但结果包含插入列表的括号,并且它也没有用插入的项替换索引位置中的项.对于步骤1,insert方法的相应结果如下所示.
[2, [6, 8, 7, 9, 6], 6, 5, 4, 2]
所以问题是如何在不保留括号的情况下统一这些级别,而不会从其他级别结束重复的项目(顶点).
我正在考虑手动删除顶点,无论我插入下一个级别,并在我完成所有级别后,平坦最终列表,虽然由于某种原因我无法使链从迭代工作.
即使我设法实施这个解决方案,我相信还有更好的选择.
我很高兴看到一些想法.
您可以通过以下方式将元素列表插入到列表中:
B = [2, 6, 5, 4, 2] C = [6, 8, 7, 9, 6] B[1:2] = C print B
版画
[2, 6, 8, 7, 9, 6, 5, 4, 2]
请注意,此操作已删除原始6并插入新元素代替6.
该方法在文档中描述为:
s [i:j] =
从i到j的s切片被可迭代t的内容替换