Python';try-except-else';同时处理多个可能的结果
我有一个适合1D数据数组的函数,但是如果数据不合适,这个函数可能会失败,并引发运行时错误 由于我的数据是一个2D数组,如果可能的话,我想在数据的两个轴上都尝试它,否则只需在一个不会抛出错误的轴上运行它 如果我正确理解了表示法,我会尝试在第一个轴的数据上使用Python';try-except-else';同时处理多个可能的结果,python,loops,exception-handling,try-catch,Python,Loops,Exception Handling,Try Catch,我有一个适合1D数据数组的函数,但是如果数据不合适,这个函数可能会失败,并引发运行时错误 由于我的数据是一个2D数组,如果可能的话,我想在数据的两个轴上都尝试它,否则只需在一个不会抛出错误的轴上运行它 如果我正确理解了表示法,我会尝试在第一个轴的数据上使用myfunc,如果失败,则返回第二个轴,否则返回第一个轴。例如,对于第1列或第1行: def myfunc(data): # some code to do a fit, might crash return fit_param
myfunc
,如果失败,则返回第二个轴,否则返回第一个轴。例如,对于第1列或第1行:
def myfunc(data):
# some code to do a fit, might crash
return fit_params
data = np.random.random((5,5))
try:
results_y = myfunc(data[0,:])
except RuntimeError:
results_x = myfunc(data[:,0])
# some math on the results
else:
results_y = myfunc(data[0,:])
# some math on the results
但是,在某些情况下,它可以在两种情况下都工作,不会出现错误,并且可以查看/比较两种结果。我如何编写这个循环,使它在可能的情况下同时执行这两个循环,否则只执行一个有效的循环?我想要么把它全部放在一个if
循环中,要么有多个try
语句
提前谢谢只需两个独立的
尝试..除了
条款
try:
results_y = myfunc(data[0,:])
except RuntimeError:
pass
try:
results_x = myfunc(data[:,0])
except RuntimeError:
pass
然而,没有必要这样做。这完全取决于数组的维数,因此最好检查
my\u数组.ndim
或my\u数组.shape
以决定要做什么。只需两个独立的try..except
子句
try:
results_y = myfunc(data[0,:])
except RuntimeError:
pass
try:
results_x = myfunc(data[:,0])
except RuntimeError:
pass
然而,没有必要这样做。这完全取决于数组的维数,因此最好检查
my\u数组.ndim
或my\u数组.shape
来决定要做什么。这里的else
块中似乎没有任何点。如果没有异常,则执行它,但只是重复在try
块中执行的操作;如果没有异常,那么results\u y
已经存在。这里的else
块中似乎没有任何点。如果没有异常,则执行它,但只是重复在try
块中执行的操作;如果没有例外,那么results\u y
已经存在。谢谢你的回答,我想得太多了!谢谢你的回答,我想得太多了!