Как увеличить итератор в l oop с условием if? - PullRequest
1 голос
/ 14 марта 2020

У меня есть массив данных xarray, который я хотел бы переназначить по году в словарь. Мне не удалось получить правильный прирост, поскольку код правильно получает дату только в течение первых 3 лет (до первого високосного года). Я пытался отбросить все високосные годы, чтобы у меня был прирост только 365, однако впоследствии я столкнулся с ошибками памяти.

pre={}
start=-365
for i in np.arange(1982,2020):
    if not i in leap_years:
        start+=365
        pre[i]=precip[start:start+365]
    else:
        start+=365
        pre[i]=precip[start:start+366]

1 Ответ

1 голос
/ 14 марта 2020

То, как вы используете start, вам нужно увеличить еще раз после установки pre[i] для високосного года.

pre={}
start=-365
for i in np.arange(1982,2020):
    if not i in leap_years:
        start+=365
        pre[i]=precip[start:start+365]
    else:
        start+=365
        pre[i]=precip[start:start+366]
        <b>start+=1</b>

Вы можете упростить это до

start = 0
for i in np.arange(1982, 2020):
    days_in_year = 365 if i not in leap_years else 366
    # days_in_year = 365 + int(i in leap_years)
    pre[i] = precip[start:start+days_in_year]
    start += days_in_year
...