合併具有共享元素的列表
此任務涉及合併共享公共元素的列表,從而形成一個統一的結構。考慮以下輸入:
[['a','b','c'],['b','d','e'],['k'],['o','p'],['e','f'],['p','a'],['d','g']]
每個子清單代表一個元件或一組元素。目標是基於共享元素合併列表,並繼續合併過程,直到不再有列表共享元素。
使用 NetworkX 的解決方案
合適的解決方案利用 NetworkX庫,它提供了表示和操作圖形的有效工具。透過將輸入列表轉換為圖形,其中節點代表元素,邊代表共享元素,我們可以採用演算法來識別圖形的連接組件。
這是使用 NetworkX 的 Python 實作:
<code class="python">import networkx as nx from networkx.algorithms.components.connected import connected_components def to_graph(l): G = nx.Graph() for part in l: # each sublist is a bunch of nodes G.add_nodes_from(part) # it also imlies a number of edges: G.add_edges_from(to_edges(part)) return G def to_edges(l): it = iter(l) last = next(it) for current in it: yield last, current last = current G = to_graph(l) print(connected_components(G))</code>
此程式碼將輸入清單轉換為圖表,並識別與最終合併清單相對應的連接元件。
結論
透過利用 NetworkX 和基於圖論概念,我們實現了基於共享元素合併清單的有效解決方案,從而產生所需的合併結構。
以上是如何使用 NetworkX 合併具有共享元素的清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!