Вы были правы, полагая, что если выражение в понимании списка становится слишком большим, было бы лучше использовать прямое выражение для -l oop.
При этом выражение можно упростить с помощью применение str.replace () для удаления «без» без теста ( replace молчит, если нет замен):
>>> s = 'The Artist Formerly Known as Prince'
>>> s.lower().replace('the ', '').replace(' ', '')
'artistformerlyknownasprince'
В качестве альтернативы, все Процесс может быть проще и гибче с регулярным выражением:
>>> re.sub(r'(^the)|\s', '', s.lower())
'artistformerlyknownasprince'