python - 在嵌套 for 循环中使用 try- except

标签 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 block 来迭代所有网格点。我认为这不起作用——它似乎无限循环。

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))

最佳答案

我认为您可能正在寻找 pass 语句而不是 continue。但我可能不太明白你的问题。顺便说一句,你不能对其进行矢量化吗?

看起来唯一可能引发 IndexValue 错误的是 calc 函数,因为所有循环都在范围。为什么不直接用函数和数组赋值来包装 2 行代码呢?

关于python - 在嵌套 for 循环中使用 try- except,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56116863/

相关文章:

javax.script.ScriptEngine 在运行时失败

python - 可以一次运行两个无限循环吗?

Delphi - 引发后对其自己的构造函数进行异常处理

c# - 什么时候应该使用 ThrowHelper 方法而不是直接抛出?

c# - if 抛出异常的语句?

python - 使用 peewee 进行反向外键查询

Python FeedParser 很好地格式化 Reddit

python - 如何从另一个类更改类的属性

c - 2D 数组的输入(-1 表示行结束输入,-2 表示 2D 数组输入结束)问题

java - 多方法程序中的控制流