Уменьшают ли понимание списков в Python эффективным с точки зрения памяти способом?
Вопрос
Я новичок в Python, и это мой первый пост, так что не будьте слишком резкими :).В последнее время я играл с Python и задавался вопросом, есть ли что-то вроде
родовое словоприведет к тому, что Python сначала создаст список всех элементов, а затем найдет максимальное значение, что приведет к времени O (2n), или он будет отслеживать максимальное значение при повторении для Θ (n).Кроме того, поскольку диапазон отличается в Python3 (является итерируемым), будет ли это отличаться от диапазона в Python2?
Решение
В вашем примере Python сначала построит весь список.Если вы хотите избежать этого, вы можете вместо этого использовать выражение генератора:
родовое словоили просто:
родовое слово Конечно (в Python 2), range
создает полный список, поэтому в этом случае вам действительно нужно:
Однако, что касается затраченного времени, все эти выражения имеют одинаковую сложность.Важное отличие состоит в том, что для последнего требуется пространство O (1), тогда как для других требуется пространство O (n).
Другие советы
Компоненты списка всегда создают список (если что-то не вызывает исключение).Вместо этого в большинстве случаев рекомендуется использовать генекс.
родовое слово