在嵌套的for循环中使用try-excepts

时间:2019-05-13 17:03:19

标签: python loops exception try-except

我有一个嵌套循环,在其中对3维数组中的每个网格点执行计算。这些网格点中的一些会触发错误。我想计算每个可能的网格点,并跳过那些触发错误的网格点。

我尝试过:

with sharedmem.MapReduce(np=45) as pool:
  def calc_func(abc):
    for k in range(241):
      try:
        for j in range(int(datetime_range)):
            for l in range((abc), abc+1):  
              value = calc(pr[j,k,l], te[j,k,l], de[j,k,l])
              array[j,k,l] = value
      except (IndexError, ValueError):
        continue
  pool.map(cape_func, range(0, 479))

^上面,计算了一些网格点,但是我认为当异常中捕获到k个值时,代码不会为该k计算其余的网格点。

下面,我尝试添加另一个try-except块来遍历所有网格点。我认为这行不通-似乎无限循环。

with sharedmem.MapReduce(np=45) as pool:
  def calc_func(abc):
    for k in range(241):
      try:
        for j in range(int(datetime_range)):
          try:
             for l in range((abc), abc+1):  
               value = calc(pr[j,k,l], te[j,k,l], de[j,k,l])
               array[j,k,l] = value
          except (IndexError, ValueError):
            continue
      except (IndexError, ValueError):
        continue
  pool.map(cape_func, range(0, 479))

1 个答案:

答案 0 :(得分:0)

我认为您可能正在寻找pass而不是continue的语句。但是我可能不太了解您的问题。在旁注中,您不能对其进行矢量化吗?

由于所有循环都超出范围,因此似乎唯一可能引发IndexValue错误的是calc函数。为什么不只用功能和数组分配包装2条代码行?