我对 Python 和 NetworkX 相当陌生。我需要创建一个类似于 Edgelist=[(0,1),(0,3),(1,0),(1,2),(1,4),(2,1),(2,5)]
的列表,这些元素代表边(链接)的起始和结束节点,而边又是网络的一部分。
我希望 Python 通过随机选择 (start,end)
的整数值来创建您在列表中看到的对,而不是手动设置它们。来自分配的值范围(即 0, 999
),这些值代表节点 ID。然后,我想确保每个节点 ID 至少包含在一系列(开始,结束)值中一次(这意味着我的所有节点将连接到至少一个其他节点) .
我知道我可以使用 random.randint(0, 999)
但我不知道如何将其“嵌套”到列表的创建中(也许是 for 循环?)。我希望我有一些代码可以向您展示,但这是我第一次尝试使用 NetworkX!
编辑
为了让您直观地了解我的意思,这里有两张图片。第一个是规则网络(又称格子),第二个是随机网络。第一个的边缘列表是手动创建的,以便重现国际象棋棋盘,而第二个显示的边缘列表是第一个边缘列表(手动)打乱的副本。 如您所见,节点保存在完全相同的位置。希望这能有所帮助。谢谢!
最佳答案
有一个类似的答案,但对于 - How to generate a fully connected subgraph from node list using python's networkx module 上的完整图表
就您而言,使用 zubinmehta的answer :
import networkx import itertools def complete_graph_from_list(L, create_using=None): G = networkx.empty_graph(len(L),create_using) if len(L)>1: if G.is_directed(): edges = itertools.permutations(L,2) else: edges = itertools.combinations(L,2) G.add_edges_from(edges) return G
您可以将图表构建为:
S = complete_graph_from_list(map(lambda x: str(x), range(0,1000)))
print S.edges()
关于python - 如何生成包含几个随机整数的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33134205/