在python中,括号内有未定义术语的for循环意味着什么



我在python中有一个数学代码,需要将其转换为java。但我不知道如何工作:

#python source
sum([d**2 for d in (x - y)])

CCD_ 1是数组并且被定义并且具有值。我对for循环以及该循环中与d^2d的连接有问题。

实际的用括号括起来的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,y0zip(x,y)]

因此,python对该代码的重写可以是:

sum = 0
for a,b in zip(x,y):
sum += (a - b) * (a - b)

或者仅使用numpy函数:

numpy.square(x - y).sum()

最新更新