Maison >développement back-end >Tutoriel Python >Comment fusionner des listes avec des éléments partagés à l'aide de NetworkX ?

Comment fusionner des listes avec des éléments partagés à l'aide de NetworkX ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-21 17:13:02858parcourir

How to Merge Lists with Shared Elements Using 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn