我正在識別方向圖中的循環。我的函數返回一個列表,它存儲所有找到的循環中的節點。從python列表中刪除類似但不相同的列表
例如,在其中節點被連接這樣的曲線圖:
(1,2)(2,3)(3,4)(3,5)(5,2)
一個環路以2發現 - 3 - 5,以便該函數將返回:
[[2,3,5]]
在某些情況在那裏有多個迴路會返回類似的東西:
[[2,3,4][6,7,8,9]]
這很好,但如果它e爲一圖表的多個開始點,這在不同的點加入到同一個環,如在圖中:
(1,2)(2,3)(3,4)(3,5)(5,2)(6,3)
兩個節點1和6連接在不同的點在同一環,其將返回:
[[2,3,5][3,5,2]]
所以這裏有兩個相同的循環,它們不是相同的列表。我想識別這種重複並刪除除了一個之外的所有內容(哪個並不重要)。
注意,可能存在有多個循環的情況下,其中一個是重複的,比如:我試圖尋找到itertools
[[2,3,5][3,5,2][7,8,9,6]]
:
loops.sort()
list(loops for loops,_ in itertools.groupby(loops))
但是這沒有幫助,而且我無法100%確定這是否合適。有任何想法嗎?我在Python 2.4上。謝謝你的幫助。
此刪除重複太多,我覺得OP不希望... –
我認爲「我想,以確定這樣的重複,並刪除所有,但一個(這並不重要)」意思是刪除重複的內容,但我肯定會誤解。 – DSM
真...標題說了別的! –