2017-01-14 7 views
0

I'vは私のpythonを学びながらに苦労し、私の例では い問題につまずいた、私はオブジェクトが移入リストを持っている(これらのオブジェクトを個別にアクセスすることができるリストそのものです)リスト内の項目をソート/グループ化する、より複雑な基準を扱うにはどうすればよいですか?

list_objects =[object5, object2, object4, object1, ojbject3, object6, object7, object8, object9] 

  • INPUT 0()
  • INPUT1()
  • 出力:各オブジェクトが別のオブジェクトを指す機能を有します()

オブジェクトのいくつかはお互いに接続されている可能性があります。

object4.input0() == objectA 

など:ようlist_objectsではありません

object5.input0() == object4 # object5 input points to object4 

そして、時にはオブジェクトの一部が他のオブジェクトに接続されていることが起こることができる:あることが起こる可能

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ループの2倍を試しました..しかし、これと一緒に行くと、何度も何度も実行して結果が得られますそれらのアプローチと時間の混乱のカップルを得て、私は一日中試してみてあきらめました。

は、あなたがあなたの手のグラフを持っているあなたに

答えて

0

をありがとう、私はあなたがいずれかのように扱う示唆しています。

最初のモデルは無向グラフで、外部ノードを含むサイクルを探します。これらの各ノードの最長サイクルを見つけます。

次に、各サイクルでレポートしたい2つのノードを見つけるために、有向グラフ(図面にあるもの)を見てください。

関連する問題