Я иду через документы Python 3.X, я сомневаюсь в скорости выполнения расписания List и том, как он работает.Каким образом List Comprehension работает на Python?
Давайте рассмотрим следующий пример:
Листинг 1
...
L = range(0,10)
L = [x ** 2 for x in L]
...
Теперь в моем знании это возвращает новый список, и это эквивалент записать:
каталог 2
...
res = []
for x in L:
res.append(x ** 2)
...
Главное отличие - скорость выполнения, если я прав. Листинг 1 предполагается выполнять на скорости языка C внутри интерпретатора, а листинг 2 - нет.
Но Листинг 2 является то, что список понимание делает внутренне (не уверен), так почему Листинг 1 выполняется на C Скорость внутри интерпретатора & листинге 2 не? Оба они преобразуются в байтовый код перед обработкой, или я что-то упускаю?
_both преобразуются в байтовый код перед обработкой. Да, конечно, ну и что? Они не преобразуются в один и тот же байтовый код, так почему они должны принимать такое же количество времени? –
@ ŁukaszRogalski не перечисляет 2, какое понимание списка делает внутренне? Если это так, нужно преобразовать в один и тот же код байта. Я думаю, – Sid
Основная цель понимания списков - упростить создание сложных списков и улучшить читаемость для однострочного. Вы можете сравнить, если есть разница в скомпилированном байт-кодеке 'pyc'.Исходный код Python открыт, поэтому, если вы читаете C, вы можете прочитать алгоритмы, соответствующие пониманию списка. – noumenal