Вопросы с тегом «python-internals»

Как Python работает под капотом? Используйте для вопросов, касающихся (например) принятых проектных решений и используемых внутренних структур данных и алгоритмов.

4
Почему копирование перетасованного списка происходит намного медленнее?
Копирование перемешанного range(10**6)списка десять раз занимает у меня около 0,18 секунды: (это пять запусков) 0.175597017661 0.173731403198 0.178601711594 0.180330912952 0.180811964451 Копирование не перемешанного списка десять раз занимает около 0,05 секунды: 0.058402235973 0.0505464636856 0.0509734306934 0.0526022752744 0.0513324916184 Вот мой тестовый код: from timeit import timeit import random a = range(10**6) random.shuffle(a) # Remove …

1
Что с целочисленным кешем, поддерживаемым интерпретатором?
После погружения в исходный код Python я обнаружил, что он поддерживает массив PyInt_Objects в диапазоне от int(-5)до int(256)(@ src / Objects / intobject.c) Небольшой эксперимент это доказывает: >>> a = 1 >>> b = 1 >>> a is b True >>> a = 257 >>> b = 257 >>> a …

2
list () использует немного больше памяти, чем понимание списка
Итак, я играл с listобъектами и обнаружил небольшую странную вещь, которая, если listсоздается с list()ее помощью, использует больше памяти, чем понимание списка? Я использую Python 3.5.2 In [1]: import sys In [2]: a = list(range(100)) In [3]: sys.getsizeof(a) Out[3]: 1008 In [4]: b = [i for i in range(100)] In …

4
Почему я получаю столько итераций, когда добавляю и удаляю из набора во время итерации по нему?
Пытаясь понять цикл for Python, я подумал, что это даст результат {1}за одну итерацию или просто застрянет в бесконечном цикле, в зависимости от того, выполняет ли он итерацию, как в C или других языках. Но на самом деле это не так. >>> s = {0} >>> for i in s: …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.