Рубрики
Без рубрики

Как вставить элемент в конце списка в Python

Состав задачи дан список и элемент. Как вставить элемент в последней позиции списка? Два решения Существует два основных способа вставить элемент в конце данного списка. Используйте list.append (элемент), чтобы добавить элемент в конец списка. Это самый идиоматический … Как вставить элемент в конце списка в Python Подробнее »

Автор оригинала: Chris.

Постановка проблемы

Учитывая список и элемент. Как вставить элемент в последней позиции списка?

Два решения

Существует два основных способа вставить элемент в конце данного списка.

  • Использовать list.append (элемент) Чтобы добавить элемент до конца списка. Это самый идиоматический подход.
  • Использовать list.insert (len (list), элемент) «Вставить» элемент в конец списка. Это немного нечетное, но он часто используется при определении индекса вставки динамически.

Вы можете увидеть оба пути в действии в следующем минимальном примере кода:

>>> lst = [1, 2, 3]
>>> lst.append('Alice')
>>> lst
[1, 2, 3, 'Alice']
>>> lst.insert(len(lst), 'Bob')
>>> lst
[1, 2, 3, 'Alice', 'Bob']

Вы создаете список [1, 2, 3] и хранить его в переменной lst Отказ

  • Вы добавляете элемент «Алиса» до конца списка. У него сейчас четыре элемента [1, 2, 3, «Алиса»] Отказ
  • Вы вставляете новый элемент «Боб» до последней позиции в списке с индексом ЛЕН (LST) Отказ Обратите внимание, что Python использует индексацию на основе нуля, поэтому первая позиция имеет индекс 0. Полученный список имеет 5 элементов, а новый элемент находится на хвосте списка.

Однако оба метода не создаются равными. Применение элемента имеет постоянную сложность времени выполнения независимо от того, насколько большой список (O (1)). Вставка элемента имеет линейную сложность выполнения и растет с размерами растущего списка (O (n)).

Вы можете увидеть это здесь:

Видеосистемы вставьте () и добавьте ()

Погрузиться глубже в list.append () Метод, я бы порекомендовал смотреть мое полное видео объяснение здесь:

Погрузиться глубже в очень важный list.insert () Метод, я бы порекомендовал смотреть мое полное видео объяснение здесь:

Индекс превышает

Фактически, вы можете вставить элемент в конце списка, используя любой индекс вставки, который больше или равен длине списка. Формально, list.insert (индекс, элемент) добавит элемент до конца списка при использовании любого Индекс (LST) Отказ

Вот несколько примеров, которые вставляют три элемента по индексам, которые, по меньшей мере, длина списка в момент времени вставки. В этих случаях элементы просто добавляются к списку.

>>> lst = [1, 2, 3]
>>> lst.insert(3, 'Alice')
>>> lst.insert(100, 'Bob')
>>> lst.insert(9999999, 'Carl')
>>> lst
[1, 2, 3, 'Alice', 'Bob', 'Carl']

Негативная индексация

Отрицательная индексация часто используется в схемах индексации списка для сочетания от права вместо левого. Последняя позиция имеет отрицательный индекс -1. Тем не менее, вы не можете использовать негативную индексацию и стараться быть слишком умным, потому что самый большой отрицательный индекс –1, и он вставит элемент на второй последней позиции, а не последнее.

В следующем примере показана эпическая провал:

>>> lst = [1, 2, 3]
>>> lst.insert(-1, 'Alice')
>>> lst
[1, 2, 'Alice', 3]

Элемент «Алиса» теперь второй последний элемент, а не последний.

«Добавить», используя конкатенацию списка

Обратите внимание, что некоторые люди рекомендуют вставить элемент в последней позиции списка, как так:

>>> lst = [1, 2, 3]
>>> lst = lst + ['new']
>>> lst
[1, 2, 3, 'new']

Хотя вывод выглядит так же, это на самом деле не решает проблему, потому что Список Concatenatio N Оператор list_1 + list_2 Создает новый список с элементами двух существующих списков. Оригинальные списки остаются неизменными. Только путем назначения его переменной lst Вы перезаписываете это. Однако, если другая переменная указывает на старый список, эта опция на основе конкатенации списка не будет работать, потому что старый список остается неизменным.

>>> lst_1 = [1, 2, 3]
>>> lst_2 = lst_1
>>> lst_2 = lst_2 + ['new']

В этом примере вы создаете два списка lst_1 и lst_2 Оба ссылатся на то же самое Список объекта в памяти. Вы пытаетесь добавить новый элемент до конца списка, используя проблемный метод. И вы получите столкновение – оба списка относятся к разным объектам в памяти!

>>> lst_2
[1, 2, 3, 'new']
>>> lst_1
[1, 2, 3]

Таким образом, list.append («новый») Способ превосходит список Concatenation для добавления элемента в последней позиции в списке.

>>> lst_1 = [1, 2, 3]
>>> lst_2 = lst_1
>>> lst_2.append('new')
>>> lst_1
[1, 2, 3, 'new']
>>> lst_2
[1, 2, 3, 'new']

Обе переменные теперь относятся к тому же, измененному объекту списка.

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.