#6. Реализация динамического массива на Python | Структуры данных

  Рет қаралды 15,407

selfedu

selfedu

Күн бұрын

Пікірлер: 39
@donfedor007
@donfedor007 11 ай бұрын
Очень круто и доступно! Яркий пример того, когда человек занимается своим делом!
@ЕрвандАгаджанян-в3к
@ЕрвандАгаджанян-в3к 2 жыл бұрын
Как же это жутко интересно! Это самый качественный материал на ютубе!!!!
@siarheiulas6969
@siarheiulas6969 Жыл бұрын
Очень полезный материал. Спасибо за Вашу работу!
@soundwaveandfriends
@soundwaveandfriends 3 ай бұрын
7:32 тут, насколько я понимаю, есть еще одна фишка: при объединении списков создается только новый массив указателей, при этом сами значения указателей остаются прежними, как и сами переменные. Поэтому если создать новый список в виде объединения двух предыдущих, изменения значений переменных через обращение к общему списку будут изменять соответствующие значения в старых списках
@МихаилЛебедев-п2и
@МихаилЛебедев-п2и Жыл бұрын
Сергей, спасибо за работу!
@eugenedukatta9355
@eugenedukatta9355 9 ай бұрын
Материал годный! Здесь 5:45 Небольшое замечание. Так как индексация списка начинается с 0, в действительности 1 не вычитается. То есть сам Питон 1 не вычитает, и в формуле вместо p = marks + (j-1)*k следует написать p = marks + j*k
@56flash56
@56flash56 Жыл бұрын
Отличный материал 👍 небольшой коммент: несколько раз встречается термин список, но речь идёт о массиве, наверно оговорка
@56flash56
@56flash56 Жыл бұрын
Речь идет о списке в терминологии 🐍 , получается все норм, но новичка может немного сбить с толку)
@antonleshchuk5908
@antonleshchuk5908 2 жыл бұрын
Спасибо за полезный материал.
@Name-ko3qb
@Name-ko3qb 2 жыл бұрын
Сергей, а как вы выглядите?
@zakzak3944
@zakzak3944 9 ай бұрын
😂😂😂😂😂😂
@koshakpoc2876
@koshakpoc2876 2 жыл бұрын
Можете рассказать про списковое включение, как оно устроено под капотом?
@zakirovio
@zakirovio Жыл бұрын
а при создании пустого массива, получается в RAM создается адрес только первой ячейки? или рам содержит адрес некоторой сущности массива, в котором еще не определено количество необходимых ячеек памяти? ведь я питоне реализован механизм создания пустого списка и последующее его наполнение.
@selfedu_rus
@selfedu_rus Жыл бұрын
для Python (списка) создается сущность, в языке Си/С++ только указатель на выделенную область памяти + несколько служебных переменных для управления состоянием массива
@zakirovio
@zakirovio Жыл бұрын
@@selfedu_rus благодарю
@test_cattest-cat8879
@test_cattest-cat8879 Жыл бұрын
Почему время копирования последовательности элементов из массива А в новый массив Б О(n) ? Время доступа к элементам списка А О(1), время вставки элементов в массив Б О(1). Откуда здесь сложность O(n) ?
@selfedu_rus
@selfedu_rus Жыл бұрын
Время вставки только последнего элемента O(1), промежуточных, по прежнему, O(n). Здесь n - длина массива. И Big O - это лишь асимптотическая оценка верхней границы, а не реальные затраты.
@Chris-dx7oi
@Chris-dx7oi Жыл бұрын
А как происходит добавление нового элемента в список без выделения памяти для новых элементов, как в случае с массивами? Элементы списка хранятся рядом в памяти?
@intxxicated6495
@intxxicated6495 4 ай бұрын
Как я понял, элемент добавляется где-то в другом участке памяти, а в массиве создается только ссылка на тот участок. Вот для ссылок тут всё работает также, как и для элементов в С++ - заранее задан участок физической памяти списка (массива). Вот только вопрос: а какой размер занимают ссылки?
@intxxicated6495
@intxxicated6495 4 ай бұрын
Сразу и ответ нагуглил, вдруг кому интересно будет: Сама ссылка - 4 байта на 32 разряда, 8 байт на 64 разряда.
@zakirovio
@zakirovio Жыл бұрын
и еще возник вопрос, как определяется сколько байт занимает ссылка?
@selfedu_rus
@selfedu_rus Жыл бұрын
Это в самом интерпретаторе прописано. Скорее всего или 32 или 64 бита в зависимости от разрядности интерпретатора.
@sammyel4eg
@sammyel4eg Жыл бұрын
а в питоне по одному элементу нарастает (динамический массив) list не как в теории *2 по количеству элементов
@selfedu_rus
@selfedu_rus Жыл бұрын
вроде, нет, да и в теории *2 - это лишь пример
@sammyel4eg
@sammyel4eg Жыл бұрын
@@selfedu_rus да, я посмотрел, когда объявляется список под него сразу выделяется какое то количество памяти, а потом он расширяется 64 байта пустой список + 8 байт на каждый элемент
@alexandreabramtsev9160
@alexandreabramtsev9160 2 жыл бұрын
Я правильно понимаю что если мы в качестве динамического элемента выберем двухсвязный список, тогда вставка в любое место будет О(1) - те правка значений ссылок prev и next, а вот произвольная выборка O(n) - так как переход происходит последовательно по элементам... ?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Для вставки в любое место нужно сначала получить ссылку объекта, после которого вставляем. У нас изначально этой ссылки нет. Ее получение O(n), поэтому операция вставки требует O(n) операций.
@alexandreabramtsev9160
@alexandreabramtsev9160 2 жыл бұрын
@@selfedu_rus действительно... Только если уже есть элемент перед или после которого вставлять или удалять. Спасибо
@kanstantsinharokhau7812
@kanstantsinharokhau7812 2 жыл бұрын
А почему сложность операции взятия элементов по срезу составляет O(n), а не O(1)?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
формируется новый массив с набором элементов из среза. Эта операция, в общем случае (в пределе) составляет O(n), n - число элементов в исходном массиве.
@АйбекЕрмекбаев-ч2и
@АйбекЕрмекбаев-ч2и 2 жыл бұрын
Здравствуй! Почему пятый урок не доступен?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
где именно недоступен? все открыто, вот ссылка: kzbin.info/www/bejne/jYqodaaPabucnck
@antonleshchuk5908
@antonleshchuk5908 2 жыл бұрын
Про адрес элемента в массиве... Скорее всего вы говорите об адресе индекса элемента?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
индекс элемента - это порядковый номер (число) у него нет адреса ))
@antonleshchuk5908
@antonleshchuk5908 2 жыл бұрын
Я пытаюсь проверить формулу, по которой определяется адрес j-го элемента. И не выхожу на неё. И смотрю что id() каждого элемента списка зависит от того, какое это значение, а не от порядкового номера в списке и количества байт. Особенно сильно id отличаются , если в списке элементы разных типов. Или под адресом вы имеете в виду не id элемента?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@antonleshchuk5908 а нет, здесь вы увидите id, которое хранит ссылка, т.е. вы по сути видите значения динамического массива, который хранит адреса объектов, на которые ссылаются его элементы
@romankats997
@romankats997 2 жыл бұрын
Дякуємо за чудові ролики. Дуже цікаво і корисно
@artemtitov8657
@artemtitov8657 2 жыл бұрын
почему не привели пример,что происходит когда элемент вставляется в конец списка? сколько python выделяет элементов,что происходит когда кол-во элементов заканчивается и добавляется новый? в этом же и фишка динамического массива, а вы эту возможность на питоне и не показали по факту
@selfedu_rus
@selfedu_rus 2 жыл бұрын
динамический массив на Python можно воспринимать список list, работу с ним я подробно описывал в курсе по Python, а здесь показал пример его работы с добавлением элементов в конец и в произвольную позицию
Creative Justice at the Checkout: Bananas and Eggs Showdown #shorts
00:18
Fabiosa Best Lifehacks
Рет қаралды 24 МЛН
Don't underestimate anyone
00:47
奇軒Tricking
Рет қаралды 24 МЛН
How To Choose Mac N Cheese Date Night.. 🧀
00:58
Jojo Sim
Рет қаралды 104 МЛН
Задача из Собеседования на 160,000 Евро в Год
13:27
Саша Лукин
Рет қаралды 1,1 МЛН
Python - полный курс для начинающих. Этот навык изменит твою жизнь.
5:27:42
Creative Justice at the Checkout: Bananas and Eggs Showdown #shorts
00:18
Fabiosa Best Lifehacks
Рет қаралды 24 МЛН