С т.з. сложности алгоритма генератор списка аналогичен циклу? O(n)?
Первое эффективнее.
Синтаксический сахар под капотом подразумевает дичайшие перетурбации, зачастую неэффективные. Бывают хорошие оптимизаторы, но полагаться на них не стоит.
К тому же, во втором случае пробегаем три раза, O(3n).
Это вопрос для собеседования. Люблю такие вопросы задавать, чтобы понять, тянет ли кандидат хотя бы на джуниора или нет.
А дальше идут вопросы про классы, ООП, интерфейсы и прочее
сложность обоих решений O(n), разница только в константе. Но в первом случае вы пробегаетесь по всему списку 1 раз, и сразу считаете все что нужно. во втором - вы это делаете 3 раза.  Ну и да - во втором случае вы еще и память выделяете.