2016-06-03 1 views
-3

나는 Python으로 수학 코드를 가지고 있으며 그것을 java로 변환해야합니다. 그러나 나는 그것을 이해할 수 없다 : 대괄호 안에 정의되지 않은 용어가있는 for for 루프는 Python에서 무엇을 의미합니까?

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

d

이 행 앞에 정의되지 않았습니다. x,y은 배열이며 정의되어 있으며 값을가집니다. for 루프와 그 루프의 연결이 d^2d 인 루프에 문제가 있습니다.

+2

을 : //www.pythonforbeginners.com/basics/list-comprehensions-in-python – pvg

답변

1

대괄호로 묶인 실제 for 루프는 list comprehension이며 목록을 생성합니다.

(여기 d)하여 변수를 의미
[ expression(<variables>) for <variables> in <list> ] 

는 (여기 (x - y)) 지정된 목록의 값을 반복한다 : 이것은 다음과 같이 일반적으로 표현된다. 반환 된 목록에는 표현식의 값이 포함되며 각 값은 d입니다.

이 작성 방법은 변수가 사용 된 후에이를 정의하므로 이전에 정의하지 않은 것이 정상입니다. 명확한에서

는 코드는 다음과 동일합니다 :

squares = [] 
for d in (x - y): 
    squares.append(d**2) 
sum(squares) 

는 사소, sum 목록의 합계를 반환합니다.


당신은 당신의 코드가 수학을하고 당신이 배열보다는 목록 말을하는 말을하기 때문에, 여기에서 당신이 x,y이 NumPy와 배열 인 것을 의미하는에 가정합니다.

이 경우 x - y은 의미 : 항목 별 항목 빼기 배열이 있습니다. [a - b for a,b inzip(x,y)]

는 따라서 그 코드의 파이썬 재 작성 될 수있다 : 같은 지능형리스트로 작성
, 그것은 보일 것

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

또는 만 NumPy와 기능 : HTTP를

numpy.square(x - y).sum() 
관련 문제