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

Mary-Kate Olsen
Libérer: 2024-10-21 17:13:02
original
779 Les gens l'ont consulté

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']]
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!