Преобразование цикла Matlab в цикл Python - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь преобразовать скрипт Matlab в код Python, и у меня есть этот цикл:

n = 3;
v = zeros(n,n);
for i =1:n
    for j =1:i
        v(i,j) = ((2)^(i-j))*((3)^(j-1));
    end
end

Мне удалось преобразовать его в этот код Python:

import numpy as np

n = 3
v = np.zeros((n,n))
for i in range(1,n+1):
    for j in range(1,i+1):
        v[i-1,j-1] = ((2)**(i-j))*((3)**(j-1))

Но этоне выглядит красиво.Есть ли более аккуратный способ написать этот цикл в Python?Я хочу избавиться от диапазона (1, n + 1) и записать его как обычно диапазон (n), но я застрял.

1 Ответ

0 голосов
/ 12 октября 2018
for i in range(n):
    for j in range(i+1):
        v[i,j] = ((2)**(i-j))*((3)**(j))

Разница (ij) не изменится, если j и i уменьшатся на единицу, вам просто нужно обновить последнюю мощность.

Вы также можете сделать это в одном списке понимания,которые полезны в Python:

v=[[(2**(i-j))*(3**j) if j<=i else 0 for j in range(n)] for i in range(n)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...