我是python编码的新手。我希望修改此代码以开发二分两种模式版本。它是来自 networkx 的代码,用于制作几何随机图。我必须掌握这个功能的大部分内容,但我无法准确理解第 94 到 99 行在做什么。我理解 while, zip 和 nodes.pop() 但其他部分让新手感到困惑。任何人都可以帮助解释这部分代码所做的比给出的一般 # 描述更多吗?
G=nx.Graph()
G.name="Random Geometric Graph"
G.add_nodes_from(range(n))
if pos is None:
# random positions
for n in G:
G.node[n]['pos']=[random.random() for i in range(0,dim)]
else:
nx.set_node_attributes(G,'pos',pos)
# connect nodes within "radius" of each other
# n^2 algorithm, could use a k-d tree implementation
nodes = G.nodes(data=True)
while nodes: #line94
u,du = nodes.pop()
pu = du['pos']
for v,dv in nodes:
pv = dv['pos']
d = sum(((a-b)**2 for a,b in zip(pu,pv))) #line99
if d <= radius**2:
G.add_edge(u,v)
return G