Maison >développement back-end >Tutoriel Python >Comment fusionner des listes avec des éléments partagés à l'aide de NetworkX ?
Fusionner des listes avec des éléments partagés
Cette tâche consiste à fusionner des listes qui partagent des éléments communs, ce qui donne lieu à une structure consolidée. Considérez l'entrée suivante :
[['a','b','c'],['b','d','e'],['k'],['o','p'],['e','f'],['p','a'],['d','g']]
Chaque sous-liste représente un composant ou un groupe d'éléments. L'objectif est de fusionner des listes en fonction d'éléments partagés et de poursuivre le processus de fusion jusqu'à ce que plus aucune liste ne partage d'éléments.
Solution utilisant NetworkX
Une solution adaptée exploite NetworkX bibliothèque, qui fournit un outil efficace pour représenter et manipuler des graphiques. En convertissant les listes d'entrée en un graphique, où les nœuds représentent les éléments et les arêtes représentent les éléments partagés, nous pouvons utiliser des algorithmes pour identifier les composants connectés du graphique.
Voici une implémentation Python utilisant NetworkX :
<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>
Ce code convertit les listes d'entrée en graphique et identifie les composants connectés, qui correspondent à la liste finale fusionnée.
Conclusion
En utilisant NetworkX et concepts de la théorie des graphes, nous obtenons une solution efficace pour fusionner des listes basées sur des éléments partagés, aboutissant à la structure consolidée souhaitée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!