【问题标题】:How to increment iterator in loop with if condition?如何使用 if 条件在循环中增加迭代器?
【发布时间】:2020-03-14 16:00:46
【问题描述】:

我有一个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]

【问题讨论】:

  • 你用while loop试过了吗?
  • 为什么要在闰年增加start+=365(与常规情况一样),但要计算到start+366的范围?

标签: python loops for-loop increment python-xarray


【解决方案1】:

您使用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]
        start+=1

您可以将其简化为

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    相关资源
    最近更新 更多