在尝试给定某些参数的情况下,我有以下代码:
def generate_graph(numNodes, equality, magnitude, conectivity):
graph = {}
nodes = []
for x in range(numNodes):
graph[x] = {}
nodes.append(x)
nodes2 = nodes
for i in range(len(nodes)):
nextNodes = nodes2
print(nextNodes)
nextNodes.remove(i)
for j in range(conectivity):
chosenNode = random.choice(nextNodes)
nextNodes.remove(chosenNode)
connected = False
for node in graph[chosenNode]:
if node == i:
connected = True
if not connected:
graph[i][chosenNode] = random.randint(0, magnitude)
return graph
我要解决的问题就是这里的问题:
nextNodes = nodes2
print(nextNodes)
由于node2数组是在for循环中之前声明的,并且在此函数的其余部分中未更改,因此我假设nextNodes将始终打印相同的数组。就是原始节点2。但是,似乎不存在,取而代之的是某些值不再存在。我得到的结果如下:
generate_graph(10, 0, 10, 4)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[4, 5, 6, 7, 9]
...and then an error after the second iteration
由于这个原因,在尝试删除不存在的变量时,总是会出现错误。
无论如何,重新分配变量会导致原始列表被覆盖吗?我是否正在寻找方法上的一些根本缺陷?