在嵌套的 for 循环中使用 try-excepts
Using try-excepts in nested for loops
我有一个嵌套循环,我在其中对 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))
我认为您可能正在寻找 pass
语句而不是 continue
。但我可能没有很好地理解你的问题。在旁注中,你不能矢量化它吗?
看起来唯一可能抛出 Index
或 Value
错误的是 calc
函数,因为您的所有循环都在一个范围内。为什么不用函数和数组赋值将 2 行代码包裹起来?
我有一个嵌套循环,我在其中对 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))
我认为您可能正在寻找 pass
语句而不是 continue
。但我可能没有很好地理解你的问题。在旁注中,你不能矢量化它吗?
看起来唯一可能抛出 Index
或 Value
错误的是 calc
函数,因为您的所有循环都在一个范围内。为什么不用函数和数组赋值将 2 行代码包裹起来?