我在学习python时偶然发现了一个我正在努力解决的问题 在我的示例中,我有一个填充了对象的列表(这些对象本身就是可以单独访问的列表)
list_objects =[object5, object2, object4, object1, ojbject3, object6, object7, object8, object9]
每个对象都有指向另一个对象的函数:
- input0()
- input1()
- output()
某些对象可能碰巧相互连接,例如:
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]]
这里的顺序很重要。。我需要在列表中首先获取第一个对象,最后一个对象位于最后,如图所示
我希望我把问题解释得足够清楚
似乎我找不到很好的解决方案,我尝试了双for循环和while循环。。但我认为,要实现这一点,我必须反复运行多次,才能得到我所需要的结果。这些方法导致了几次混乱,经过一整天的尝试,我放弃了
多谢各位
你手上有一张图表,我建议你把它当作一张
第一个模型是无向图,寻找包含外部节点的循环。查找每个节点的最长周期
然后查看有向图(与图形中的图基本相同),以找到每个循环要报告的两个节点
相关问题 更多 >
编程相关推荐