Я бы соблазнился попробовать, кроме блока. Вы должны были бы рассмотреть, когда индекс был отрицательным, хотя. Это ошибка или приемлемый ввод?
Но сработает следующее:
try:
return re.findall(r'somewhat', 'somewhere')[index]
except IndexError:
return 'default'
Предполагается, что это предпочтительный способ, если вы беспокоитесь об эффективности, так как он избегает проверки границ массива дважды (один раз, когда вы делаете это вручную, и второй, когда python также выполняет свою внутреннюю проверку).
edit: мне никогда не нравился этот способ, поскольку он скрывает любые ошибки IndexError, генерируемые вложенными вызовами, и возвращает значение по умолчанию (что, я сомневаюсь, будет желаемым поведением и возможным источником ошибок).