Ich bin neu in der Codierung von Python. Ich hoffe, diesen Code zu ändern, um eine zweiteilige Version mit zwei Modi zu entwickeln. Es ist Code von networkx, der verwendet wird, um ein geometrisches Zufallsdiagramm zu erstellen. Ich habe mich mit den meisten dieser Funktionen beschäftigt, aber ich habe Probleme, genau zu verstehen, welche Zeilen 94 bis 99 tun. Ich verstehe zwar, zip und nodes.pop(), aber andere Teile sind für einen Neuling verwirrend. Kann jemand mit einer Erklärung dafür helfen, was dieser Teil des Codes mehr tut als die allgemeine Beschreibung?Erklärung für NetworkX-Code Python
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
geringfügige Korrektur: 'd 'ist das * Quadrat * der euklidischen Distanz. – Avaris
@Avaris: Sehr wahr, es berechnet den Begriff innerhalb der Wurzel :) –
Vielen Dank das hatte wirklich einige Dinge aus gelöscht. Wenn möglich, darf ich eine letzte Frage stellen. Ich eine nicht sicher, wo genau die u, du = nodes.pop() pu = du [ 'pos'] herkommt und was geschieht. Ich dachte, dass ich tat, aber jetzt sehe ich deine Antwort bin nicht so sicher. die besten Wünsche –