我在python中有一个数学代码,需要将其转换为java。但我不知道如何工作:
#python source
sum([d**2 for d in (x - y)])
CCD_ 1是数组并且被定义并且具有值。我对for
循环以及该循环中与d^2
和d
的连接有问题。
实际的用括号括起来的for循环是一个列表理解,它生成一个列表。这通常表示如下:
[ expression( <variables> ) for <variables> in <list> ]
这意味着您的变量(此处为d
)将迭代给定列表(此处为(x - y)
)中的值。返回的列表将包含针对d
的每个值计算的表达式值。
这种编写方式在变量使用后定义它,所以你以前没有见过它的定义是正常的。
在clear中,代码等效于以下内容:
squares = []
for d in (x - y):
squares.append(d**2)
sum(squares)
通常,sum返回列表的总和。
因为你说你的代码在做数学运算,你说的是数组而不是列表,我想从这里开始,你的意思是x,y
是numpy数组。
在这种情况下,x - y
有一个含义:数组的逐项减法
作为列表理解编写,它看起来像:x,y
0zip
(x,y)]
因此,python对该代码的重写可以是:
sum = 0
for a,b in zip(x,y):
sum += (a - b) * (a - b)
或者仅使用numpy函数:
numpy.square(x - y).sum()