Во многих языках программирования есть такая структура данных - массив. В Python это список. Все им пользуются он удобен и прост.
Основная суть данной структуры - последовательное хранение определенного набора элементов. Это как большая коробка, которая хранит в себе предметы поменьше.
list_example: list[int] = [1, 2, 3, 4]
Если брать память - то это набор ячеек в которые мы можем поместить какие-то данные. И вот тут как раз таки появляется проблема, о которой мало кто задумывается, используя списки.
Давайте представим, что наша память - это набор банковских ячеек в стене. Наш пример занял 4 ячейки. Пока мы что-то делали, кто-то занял следующую (5) ячейку. Мы решили, что нам мало элементов и решили добавить 5:
list_example.append(5)
И вот тут как раз начинается интересное. Списки последовательны, а значит нам нужно взять прошлые 4 элемента, добавить еще 1 и найти место где есть 5 свободных ячеек. И это происходит каждый раз, когда мы вставляем элемент - нам приходится переносить все значения в другое место, чтобы они шли друг за другом.
Но у списка есть огромный плюс - произвольный доступ. Это значит, что я в любой момент могу максимально быстро получить любой элемент по его индексу. И списку не надо что то вычислять - он сразу знает где о лежит, потому что хранит ссылку на 1 ячейку и просто добавляет к ней индекс.
Раз уж мы коснулись темы сложности, то добавление элемента в список занимает O(n) - в худшем случае нам надо перенести все элементы, а получение O(1) - в любой момент не перебирая элементы мы получаем доступ к любому элементу.
Подпишись на нас - будет много разборов интересного.
В телеграмм - https://t.me/john_soi_blog
В дзене - https://dzen.ru/john_soi_blog
Boosty - https://boosty.to/dh_education/donate
VK - https://vk.com/dh_ed