如何对具有相交值列表的对象列表进行分类

2024-09-27 07:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份物品清单

main_streets = [street1, street2, street3 ...]

每个街道都有一个有序的节点列表

^{pr2}$

在现实生活中,所有街道都是相互跟随的(因此它们共享一个开始/结束节点),但是主街道列表并不代表这个现实。在

我如何订购主要街道? 谢谢


Tags: 列表节点main代表街道物品现实street3
1条回答
网友
1楼 · 发布于 2024-09-27 07:22:13

如果街道形成一个单一的,连续的链条,那么你可以按如下顺序排列。首先,创建所有连接的街道对:

>>> pairs = [(a, b) for a in main_streets for b in main_streets if a.nodes[-1] == b.nodes[0]]

接下来,确定哪条是第一条街道:

^{pr2}$

现在建立一条街道链。在

>>> unordered = [s for s in main_streets if s not in ordered]
>>> for i in range(len(unordered)):
>>>     for (j, s) in enumerate(unordered):
>>>         if s.nodes[0] == ordered[-1].nodes[-1]:
>>>             ordered.append(unordered.pop(j))
>>>             break

如果链中有一个中断(即,它们没有全部连接起来),那么unordered在迭代完成后仍将包含项。如果您有多个链段,您可以从初始的ordered列表开始,并分别为这些项运行上面的最后一个部分。在

相关问题 更多 >

    热门问题