Python 3: Как удалить нечетные из списка Python - PullRequest
0 голосов
/ 03 февраля 2019

Ниже приведен пример для справки:

pairlist = [("A","B"),("Q","R"),("S","T"),("C","E"),("F","G"),("G","I"),("A","Y"),("B","C"),("B","D")]

Мне нужно получить более взаимосвязанные значения (прямо или косвенно) кортежей из этого списка

Например: см. Список ниже, где«A» связан с «B» в кортеже («A», «B») в позиции «Pairlist [0]», а «B» связан с «C» в «Pairlist» [7], и поэтому он косвенно связанв большом количестве, где «G» менее взаимосвязано.

pairs1 = ["A", "B", "C", "D", "E", "Y"] #More Interconnected indirectly

pairs2 = ["G", "F", "I"] #Less Interconnected indirectly

Ниже приведен список в списке «Нет», где «Взаимосвязано с любым».

("Q","R"),("S","T")

Даже если «G»повторяющийся, и он не связан с основным разом, он отдельно связан с другими элементами, которые очень мало связаны с другими.

Как получить список, как показано ниже

pairs = ["A", "B", "C", "D", "E", "Y"]

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете использовать пакет networkx:

import networkx as nx

pairlist = [("A","B"),("C","E"),("F","G"),("G","I"),("A","Y"),("B","C"),("B","D")]

G = nx.Graph()
G.add_edges_from(pairlist)
for i in nx.connected_components(G):
    print(i)
# {'B', 'C', 'E', 'D', 'Y', 'A'}
# {'I', 'F', 'G'}

Graph

Для построения графика используйте:

import matplotlib.pyplot as plt

nx.draw(G, with_labels=True)
plt.show()

или если вы используете ноутбук Jupyter:

%matplotlib inline
nx.draw(G, with_labels=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...