2016-12-15 7 views
0

Как написать код ниже в стиле понимания списка?Вставка списка вложенных циклов

Residual = np.zeros((noRows, noRows)) 
Dist = np.zeros((noRows, noRows)) 
for i in range(noRows): 
    for j in range(noRows): 
     Residual[i][j] = (data[data.columns[2]][i]-data[data.columns[2]][j])**2 
     Dist[i][j] = (data[data.columns[0]][i]-data[data.columns[1]][j])**2 
+0

Это возможно, поставив его в dict в понимании списка, но это будет очень большой. Не уверен, хотите ли вы этого? – Guido

ответ

0

Мы не полный код, но от того, что я могу видеть из вашего сниппета, решение должно быть что-то вроде этого:

Residual = [(data[data.columns[2]][i]-data[data.columns[2]][j])**2 for i in range(noRows) for j in range(noRows)] 
Dist = [(data[data.columns[0]][i]-data[data.columns[1]][j])**2 for i in range(noRows) for j in range(noRows)] 

Например:

noRows = 5 
l = [i+j for i in range(noRows) for j in range(noRows)] 
print(l) 

Выход будет:

[0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8] 
Press any key to continue . . . 

В вас В этом случае утверждение будет более сложным по сравнению с операцией «i + j» .... но понимание списка должно быть правильным.