在Python中设置嵌套数组值时,数组中的所有值都将成为最后一个

时间:2018-06-17 15:00:36

标签: python python-3.x

在第7行和第8行,我试图根据输入数组设置一组对象值,但是所有对象的属性都设置为10 - 循环的最后一次迭代中的值。如果有人可以解释为什么这不起作用,我会期待它会是惊人的。

我目前正在学习python,所以我不知道是否有更简单的方法来做到这一点。

class Network:
    def __init__(self, input_data, layers, nodes, output_length):
        self.layer = [Layer(len(input_data))]
        self.layer += [Layer(nodes)] * layers
        self.layer += [Layer(output_length)]
        self.input = input_data
        for __i in range(len(self.input)):
            self.layer[0].nodes[__i].value = self.input[__i]

        for self.i in range(1, self.layer.__len__()):
            for self.j in range(0, self.layer[self.i].nodes.__len__()):
                self.layer[self.i].nodes[self.j].connection = [None] * self.layer[self.i - 1].nodes.__len__()

    def compute(self):
        for self.i in range(1, len(self.layer)):
            for self.j in range(0, len(self.layer[self.i].nodes)):
                for self.k in range(0, len(self.layer[self.i].nodes[self.j].connection)):
                    self.layer[self.i].nodes[self.k].value += self.layer[self.i-1].nodes[self.k] * self.layer[self.i].nodes[self.j].value[self.k]


class Layer:
    def __init__(self, nodes):
        self.nodes = [NodeObject()] * nodes


class NodeObject:
    def __init__(self):
        self.value = 0
        self.connection = [None]

    def set_value(self, value):
        self.value = value


i = Network([1,2,3,4,5,6,7,8,9,10], 2, 16, 10)
print(i.layer[0].nodes[2].value)

提前致谢,
马特

0 个答案:

没有答案