Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Расскажите, что будет происходить с памятью, при обработке листа или словаря 
V
    Опции темы
alex_smirnov
Дата 27.5.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 22.6.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 4



Уважаемые Питон программисты,

расскажите пожалуйста, какие процессы будут происходить в памяти, если, например:
я создал большой список (словарь), а потом в цикле удалил каждый второй элемент.

т.е. как будет производиться размещение списка в памяти с каждой последующей итерацией?

Если можно по-подробней, спасибо!

PM GTalk Jabber   Вверх
Lazin
Дата 27.5.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 2
Всего: 154



Цитата(alex_smirnov @  27.5.2008,  15:54 Найти цитируемый пост)
т.е. как будет производиться размещение списка в памяти с каждой последующей итерацией?

элементы будут удалятся из списка, но то, когда они будут удалены, будет зависеть от того, используются они где-нибудь еще или нет.
списки
PM MAIL Skype GTalk   Вверх
alex_smirnov
Дата 27.5.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 22.6.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 4



Спасибо, конечно, что напомнили, что такое связанный список smile, это было действенно, я задумался.

Подтвердите логику.

Смотрите, пусть я удаляю середину списка. И, как я понимаю, то указатель последнего элемента первой части будет указывать на первый элемент последней части списка. А удаляемая мной середина затрется. А серьезных перемещений в памяти происходить не будет. Так?
PM GTalk Jabber   Вверх
Lazin
Дата 28.5.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 2
Всего: 154



Цитата(alex_smirnov @  27.5.2008,  16:32 Найти цитируемый пост)
указатель последнего элемента первой части будет указывать на первый элемент последней части списка.

да, но
тебя это не касается, как там реализован список - дело разработчиков языка, получить доступ к этим указателям ты не сможешь smile 
Цитата(alex_smirnov @  27.5.2008,  16:32 Найти цитируемый пост)
А удаляемая мной середина затрется. 

почитай про сборку мусора в Python-e, будут удалены элементы из середины - вообще, или только из списка, зависит от того где они еще используются
Код

class Foo:
    def __init__(self, data):
        self.str = data

    def put(self):
        print self.str

a = Foo("111111")
...
list = [1,2,3,a,5,6,7]
list.remove(a)
list
>>>[1,2,3,5,6,7]
a.put()
>>>111111


Цитата(alex_smirnov @  27.5.2008,  16:32 Найти цитируемый пост)
А серьезных перемещений в памяти происходить не будет. Так? 

а откуда им взяться smile 

PM MAIL Skype GTalk   Вверх
alex_smirnov
Дата 28.5.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 22.6.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 4



все понятненько, спасибо!

PS: тема закрыта.
PM GTalk Jabber   Вверх
Void
Дата 29.5.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 10
Всего: 173



Гм, вообще-то тип данных list в Питоне — это не связанный список. Это массив, по сути. См. Include/listobject.h и Objects/listobject.c в исходниках интерпретатора. Поэтому при удалении элементов из середины списка будут происходить перемещения памяти. Но в list, конечно, хранятся только ссылки на объекты.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Lazin
Дата 29.5.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 2
Всего: 154



Цитата(Void @  29.5.2008,  13:00 Найти цитируемый пост)
Это массив, по сути

ну и новость smile , массив указателей на объекты, скорее...
PM MAIL Skype GTalk   Вверх
Void
Дата 29.5.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 10
Всего: 173



Цитата(Lazin @  29.5.2008,  16:24 Найти цитируемый пост)
массив указателей на объекты, скорее... 

Да, но поскольку в Питоне ничего, кроме этих самых указателей и нет, уточнение излишне smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.