相关疑难解决方法(0)

我可以在列表推导中捕获错误,以确保循环所有列表项

我有一个列表推导过滤列表:

l = [obj for obj in objlist if not obj.mycond()]
Run Code Online (Sandbox Code Playgroud)

但是对象方法mycond()可以引发一个我必须拦截的异常.我需要收集循环结束时的所有错误,以显示哪个对象创建了任何问题,同时我想确保循环所有列表元素.

我的解决方案是:

errors = []
copy = objlist[:]

for obj in copy:
    try:
        if (obj.mycond()):
            # avoiding to touch the list in the loop directly
            objlist.remove(obj) 
    except MyException as err:
        errors = [err]
if (errors):
   #do something

return objlist
Run Code Online (Sandbox Code Playgroud)

在这篇文章中(如何在循环列表本身时删除列表元素而不重复它)我问是否有更好的方法来循环避免列表重复.

社区回答我,以避免列表修改,并使用适用的列表推导,如果我忽略异常问题.

在您的观点中是否有替代解决方案?我可以使用列表推导以这种方式管理异常吗?在这种情况下并使用大名单(我必须考虑哪些大?)我必须找到另一种选择?

python exception list cycle

1
推荐指数
1
解决办法
1147
查看次数

标签 统计

cycle ×1

exception ×1

list ×1

python ×1