Я согласен с другим ответом, но я хотел добавить, что прохождение исключения таким образом даст вам очень заметный удар по производительности. Настоятельно рекомендуется проверить, существует ли результат (если это то, что делает фильтр), а не передавать исключения.
Edit:
В ответ на запрос об этом я запустил этот простой тест ...
import time
def timethis(func, list, num):
st=time.time()
for i in xrange(0,1000000):
try:
func(list,num)
except:
pass
et = time.time()
print "Took %gs" % (et-st)
def check(list, num):
if num < len(list):
return list[num]
else:
return None
a=[1]
timethis(check, a, 1)
timethis(lambda x,y:x[y], a, 1)
И вывод был ..
Took 0.772558s
Took 3.4512s
НТН.