【问题标题】:Python 3: How to remove the odd ones in a python listPython 3:如何删除 python 列表中的奇数
【发布时间】:2019-02-03 08:47:03
【问题描述】:

以下是示例供参考:

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

我需要从此列表中获取元组的更多互连值(直接或间接)

例如: 请参阅下面的列表,其中“A”在pairlist[0]位置的元组(“A”,“B”)中与“B”链接,“B”与pairlist[7]中的“C”链接,依此类推它是大量间接互连的,而“G”的互连较少。

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

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

列表中的以下元组没有与任何一个互连。

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

尽管“G”是重复的,它与major一次没有联系,但它单独与其他元素联系在一起,与其他元素的联系非常少。

如何获取如下列表

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

【问题讨论】:

  • 请更详细地解释您的示例。
  • 您正在寻找图中的最大连通分量。尝试使用该词进行网络搜索,您应该能够找到一些东西。
  • 编辑了更多细节,请您再次参考并分享解决方案

标签: python python-3.x list tuples


【解决方案1】:

你可以使用包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'}

要绘制图形,请使用:

import matplotlib.pyplot as plt

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

或者如果你使用 jupyter notebook:

%matplotlib inline
nx.draw(G, with_labels=True)

【讨论】:

  • 非常感谢您的解决方案...很棒的锻炼,您做得很好
  • 如何获取图形或绘图?
  • @ManjunathanVenkatesan 我已经在我的答案中添加了如何绘制图表的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 2018-07-17
相关资源
最近更新 更多