List comprehension выполняется быстрее обычного цикла, потому что весь процесс в нём оптимизирован и протекает внутри интерпретатора. 1
Также list comprehension обычно вызывает меньше методов, чем цикл for. 1 Второй для каждой итерации вызывает метод append, что создаёт дополнительную нагрузку и обновляет состояние переменной на каждой итерации. 1 А list comprehension создаёт новый список сразу, такой подход может быть более эффективным. 1
Кроме того, при использовании цикла for на каждой итерации нужно искать переменную, держащую список, а затем вызывать её функцию append(). 3 В list comprehension этого не происходит: вместо этого используется специальная инструкция байткода LIST_APPEND, которая добавляет текущее значение в создаваемый список. 3