2014-04-09 48 views
1

我有以下幾點:如何在Python中組合數組?

[[1, 2], [3], [4,5], [6,1], [5,3,4], [4,7]] 

我想,這樣一個數字是不是在另一個數組,我結合陣列組合這些。輸出應該是這樣的:

[[1,2,6],[3,4,5,7]] 

關於如何在Python中做到這一點的任何想法?

+4

你有沒有試圖解決這個問題?你嘗試了什麼? – kojiro

+1

目前還不清楚你的意思是「如果數字在另一個陣列中」。如果另一個數組中有什麼數字? – merlin2011

+0

陣列組合的規則是什麼? – drum

回答

0

這裏就是我想要做的:

>>> L = [[1, 2], [3], [4,5], [6,1], [5,3,4], [4,7]] 
>>> L = [set(e) for e in L] 
>>> combined = [] 
>>> while L: 
...  group = L.pop() 
...  for other in L: 
...   if group.intersection(other): 
...    group.update(other) 
...  L = [e for e in L if not group.intersection(e)] 
...  combined.append(group) 
... 
>>> combined 
[set([3, 4, 5, 7]), set([1, 2, 6])] 

這第一每組轉換原始列表設置,然後貪婪地的元素融合在一起,成組。

+0

非常感謝@jterrace! – myname

+0

即將發佈此,但你擊敗了我。 –

+0

沒問題,祝你好運! – jterrace