0

我正在从 Python 转换为 Java。

我的问题是'args'在做什么?

args = [this.scrath[c] for c in this.connections(n)]; //Python

是吗:

[this.scrath[c] //get data at index c of this.scratch[]

for c in // for number of c in connections

this.connections(n)]; //connections to ANN_Neuron n

在哪种情况下“this.scratch[c]”检查数据是否与“this.connections(n)”中的 c 匹配?

this.scratch = Arrays.copyOfRange(inputValues, this.scratch.length-this.input_length, this.scratch.length+1); //JAVA

//inputValues given as negative values.
for (int i=0; i<this.scratch.length; i++){
    this.scratch[i] = inputValues[i]*-1;
}

//loop through the active genes in order
for (ANN_Neuron n : nodes){
    if (n.active){
        float func = n.function;
        for (ANN_Connection c : n.connections){
        //Argument here!!
        }
    }

    args = [this.scrath[c] for c in this.connections(n)]; //Python

    //apply function to the inputs from scratch, save results in scratch
    this.scratch[n] = function(*args);
}
4

3 回答 3

2

我想你是在向后看。

# Python:
args = [f(x) for x in iter]

类似于

// Java:
List<Type> args = new ArrayList<Type>(iter.size());
for (Type x : iter)
    args.add(f(x));

因此,在, 中[f(x) for x in iter]x被分配给 , 的每个元素iterf(x)被评估,结果被收集在一个列表中。

于 2013-07-31T15:37:15.243 回答
2

[a for b in c]是一个列表理解。它通过遍历列表(或其他可迭代对象)中的每个元素来生成一个列表c,调用该元素b,然后计算表达式a并将结果放入结果列表中。

于 2013-07-31T15:38:11.083 回答
1

这个:

args = [this.scrath[c] for c in this.connections(n)]

相当于这个:

args = []
for c in this.connections(n):
    args.append(this.scrath[c])
于 2013-07-31T15:37:02.883 回答