Как добавить в начало списка python?
если элемент надо воткннуть нулевым, а в списке уже 12800 значен, оно каждый раз всё сдвигет или нет, и почему в одних примерах insert а в других.
Ваш вопрос
если элемент надо воткннуть нулевым, а в списке уже 12800 значен, оно каждый раз всё сдвигет или нет, и почему в одних примерах insert а в других.
my_list.insert(0, 'новый') - вот и весь ответ по сути метода. Insert принимает два аргумента: позицию, куда вставлять, и сам элемент, и в отличие от append, который всегда лепит элемент в конец, insert может воткнуть его куда угодно по индексу, включая самое начало под нулём.
Пример: если есть список fruits = ['яблоко', 'груша'] и выполнить fruits.insert(0, 'банан'), список станет ['банан', 'яблоко', 'груша'], банан встанет первым, а остальные элементы просто сдвинутся правее на одну позицию каждый, ничего не потеряется и не перезапишется.
Есть нюанс по производительности, который на маленьких списках не заметен, но на больших может аукнуться: insert в начало списка работает медленнее, чем append в конец, потому что питону приходится физически сдвигать все существующие элементы, чтобы освободить место под новый. Для списка из десяти элементов разницы никакой, а вот если вставок в начало много и список большой, лучше присмотреться к структуре deque из модуля collections, у неё вставка в начало и в конец работает одинаково быстро за счёт другого устройства внутри.
Ломать список экспериментами с insert не страшно, метод меняет список на месте и возвращает None, а не новый список, поэтому если результат кажется странным, достаточно напечатать список заново и посмотреть, что получилось, ничего необратимого insert сам по себе не делает.
4o
Способ
my_list.insert(0, новый_элемент) вставит элемент на позицию с индексом 0, то есть в самое начало списка, а все остальные элементы сдвинутся на одну позицию вправо.
Отличие от append
append всегда добавляет элемент в конец списка, insert позволяет указать любую позицию, включая начало, поэтому для вставки в начало нужен именно insert с нулевым индексом.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
v4-flash
v4-flash
Как добавить в начало списка python?
Метод | Куда вставляет | Скорость append(x) | всегда в конец | быстро, O(1) insert(0, x) | в начало, под указанным индексом | медленнее на больших списках, O(n) insert(i, x) | в произвольную позицию i | зависит от размера списка и позиции collections.deque | быстрая вставка и в начало, и в конец | требует отдельного импорта модуля
Для одиночной вставки в начало обычного списка insert(0, x) вполне годится, разница в скорости заметна только на действительно больших объёмах данных или при частых вставках в цикле. Если вставки в начало происходят регулярно и список большой, deque из модуля collections справится быстрее за счёт другой внутренней структуры данных, рассчитанной именно на такие операции с обоих концов.