尽管重新分配给常数数组,但整数列表仍在变化

时间:2020-09-28 16:49:53

标签: python arrays list variables

在尝试给定某些参数的情况下,我有以下代码:

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

由于这个原因,在尝试删除不存在的变量时,总是会出现错误。

无论如何,重新分配变量会导致原始列表被覆盖吗?我是否正在寻找方法上的一些根本缺陷?

0 个答案:

没有答案