J'ai extrait une liste de tous les composants connectés d'un graphe G comme la liste des sous-graphes de cette façon:NetworkX extraction liste des composants connectés sous-graphes de certaines dimensions: compte incorrectes
sg = list(nx.connected_component_subgraphs(G))
Alors je fait quelques chefs d'accusation:
n_conn_comp = nx.number_connected_components(G) # >>> 172305
n_isolated_nodes = len(nx.isolates(G)) # >>> 152403
n_subgraf_dimensionMoreThan1 = n_conn-comp - n_isolated_nodes # >>> 19902
len(sg) # >>> 172305
Jusqu'à ici tout va bien. Ensuite, ma tâche est d'extraire une liste de composants connectés avec une dimension supérieure à 1 (au moins 2) comme une liste de sous-graphe. Parce qu'il n'y a pas une telle commande de bibliothèque NetworkX (ou je me trompe ?!), je l'ai essayé de faire de cette façon:
for elem in sg:
if len(elem) == 1:
sg.remove(elem)
Ce code ne donne aucune erreur. Je pensais que maintenant len (sg) était = n_subgraf_dimensionMoreThan1, et donc = 19902. Je vérifié ceci:
len(sg)
Mais le résultat est:
>>> 91620
beaucoup plus que prévu (19902) I ne peut vraiment pas savoir ce qui s'est mal passé. J'ai également essayé le même code pour enlever des chaînes de len 1 dans une liste de chaînes de len différente, et cela fonctionne bien et correctement.
mai avec la liste des choses vont sous-graphes de manière différente ..
Toute suggestion ?! Merci beaucoup
Possible dupliquer de [Supprimer les éléments d'une liste pendant l'itération] (http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-itating) – Joel
Vous avez raison, en fait, je finalement trouvé la solution en lisant le message que vous avez lié. Puis-je supprimer ma question ..?! –