2016-12-14 79 views
-3

我有這樣的整數元組的列表:在Python元組排序像多米諾骨牌/尋找頂點連接

L=[(1,2),(7,6),(2,3),(8,5),(3,8),(5,7)] 

每對定義了兩個頂點之間的邊緣,我想找到的頂點連接。 沒有環路,元組總是唯一連接起來,像多米諾骨牌一樣所以在這種情況下,排序列表看起來應該像:

L_sorted=[(1,2),(2,3),(3,8),(8,5),(5,7),(7,6)] 

或可替代

L_sorted=[1,2,3,8,5,7,6] 

是否有一個有效的方式做到排序像這在Python中使用預定義的方法?

+0

「使用預定義的方法」,您可以查看[NetworkX](https://networkx.github.io/)。 – blacksite

回答

-2

看看內置函數sorted

+0

這並不能解決所述的問題。 –

+0

對不起,只是試圖通過指向正確的方向幫助 – EvertW

1

我不認爲任何內置設施都可以解決這個問題。第三方庫可能會有所幫助。你可以解決它在純python:

L=[(1,2),(7,6),(2,3),(8,5),(3,8),(5,7)] 
def domino(l): 
    start = cursor = l[0][0] 
    d = dict(l) 
    while True: 
     yield cursor 
     try: 
      cursor = d[cursor] 
     except KeyError: 
      # return here if your input may be non-cyclic. 
      raise 
     if cursor==start: 
      return 
x = list(domino(L)) 
# raises KeyError because 6 is dangling... 

...或釀造一些C代碼使用ctypes

相關問題