Уменьшают ли понимание списков в Python эффективным с точки зрения памяти способом?

StackOverflow https://stackoverflow.com/questions/5349755

  •  27-10-2019
  •  | 
  •  

Вопрос

Я новичок в Python, и это мой первый пост, так что не будьте слишком резкими :).В последнее время я играл с Python и задавался вопросом, есть ли что-то вроде

родовое слово

приведет к тому, что Python сначала создаст список всех элементов, а затем найдет максимальное значение, что приведет к времени O (2n), или он будет отслеживать максимальное значение при повторении для Θ (n).Кроме того, поскольку диапазон отличается в Python3 (является итерируемым), будет ли это отличаться от диапазона в Python2?

Это было полезно?

Решение

В вашем примере Python сначала построит весь список.Если вы хотите избежать этого, вы можете вместо этого использовать выражение генератора:

родовое слово

или просто:

родовое слово

Конечно (в Python 2), range создает полный список, поэтому в этом случае вам действительно нужно:

родовое слово

Однако, что касается затраченного времени, все эти выражения имеют одинаковую сложность.Важное отличие состоит в том, что для последнего требуется пространство O (1), тогда как для других требуется пространство O (n).

Другие советы

Компоненты списка всегда создают список (если что-то не вызывает исключение).Вместо этого в большинстве случаев рекомендуется использовать генекс.

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top