我偶然发现了一个在学习python的过程中遇到的问题 在我的例子中,我有一个填充了对象的列表(这些对象是可以单独访问的列表本身)
list_objects =[object5, object2, object4, object1, ojbject3, object6, object7, object8, object9]
每个对象都有指向另一个对象的函数:
- INPUT0()
- 输入1()
- 输出()
某些物体可能碰巧彼此连接,例如它可能恰好是:
object5.input0() == object4 # object5 input points to object4
有时可能会发生一些对象连接到list_objects
之外的其他对象:
object4.input0() == objectA
或者喜欢:
object4.input1() == objectM1
最后,可能会发生这样的情况:多个对象彼此连接(我会尽量用一些绘图来解释它):
objectA
| # this is output of objectA
|
v # this is input0 of object4
object4 < # input1 of object 4
| \
| -- objectM1
v /
object5 < # input1 of object 4
|
|
v
objectB
|
|
v
object1 <
| \
| \
v \
object2 <--- objectM2
| /
| /
v /
object3 <
|
|
v
object6 <
| \
| \
v \
object8 <--- objectM3
| /|
| / |
v / |
object7 < |
| /
| /
v /
object9 <
|
|
v
#(here is None or it goes on)
现在想要的结果是我以某种方式过滤list_objects
中的对象,并且只得到彼此连接的第一个和最后一个对象:
new_list =[[object4, object5], [object1, object3], [object6, object9]]
这里的顺序很重要..我需要在列表中首先获得第一个对象,并在最后获得最后一个对象。
我希望我能够清楚地解释这个问题。
似乎我找不到好的解决方案,我已经尝试了双循环和while循环..但我想与此一起我将不得不多次运行以获得我需要的结果,它得到了用这些方法搞乱几次,经过一整天的努力,我放弃了。
谢谢
答案 0 :(得分:0)
你手上有一张图表,我建议你把它当成一个。
第一个模型是一个无向图,并查找包含外部节点的周期。找到每个节点的最长周期。
然后查看有向图(几乎是图中的内容),找到每个周期要报告的两个节点。