Добавить в начало списка в Python (Вставить в начало)

В этом руководстве вы узнаете, как использовать Python для добавления элементов в начало списка. Хотя в Python есть метод для добавления значений в конец списка, метод добавления в начало отсутствует. В конце этого руководства вы научитесь использовать метод .insert() и объединять два списка для добавления элементов в начало.

Вы также узнаете, как использовать объект deque для вставки значений в начало списка. Во многих случаях это предпочтительный метод, так как он значительно более эффективен по памяти по сравнению с другими методами.

Содержание

Проблема с добавлением списка Python

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

Причина в том, что в начале списка нет "места". Когда вы добавляете элемент в начало списка, Python должен передвинуть все остальные элементы вперед. Позже в этом уроке вы узнаете о структуре данных deque, которая представляет собой двухстороннюю очередь. В этих объектах deque элементы могут свободно вставляться в начало или конец.

Использование вставки для добавления к списку Python

Интуитивно понятный способ добавить элемент в начало списка Python - использовать метод insert. Метод .insert() принимает два параметра:

  1. Индекс позиции для вставки элемента

  2. Добавить элемент.

Давайте рассмотрим пример:

# Использование .insert() для добавления элемента в начало списка в Python
words = ['welcome', 'to', 'bemind.gitbook.io']
words.insert(0, 'hello')

print(words)

# Вывод: ['hello', 'welcome', 'to', 'bemind.gitbook.io']

Операция происходит на месте, то есть новый объект создавать не нужно. В следующем примере вы узнаете, как использовать оператор + для добавления элемента в начало списка.

Использование оператора + для добавления к списку Python

Оператор + в Python является невероятно универсальным оператором. Когда он используется с двумя списками, два списка объединяются в один, в порядке их появления. Это означает, что когда мы хотим добавить элемент (или несколько элементов) в начало, мы можем создать список, содержащий этот элемент.

Мы затем просто должны применить оператор + между двумя списками, чтобы объединить их. Давайте рассмотрим другой пример:

# Использование оператора + для добавления элемента в начало списка
words = ['welcome', 'to', 'bemind.gitbook.io']
prefix = ['hello']

words = prefix + words
print(words)

# Вывод: ['hello', 'welcome', 'to', 'bemind.gitbook.io']

Аналогичным образом, мы можем использовать оператор присваивания с увеличением для добавления элемента в начало списка. Разница здесь в том, что нам нужно переназначить к префиксу, а не наоборот. Это демонстрируется ниже:

# Использование оператора присваивания с добавлением (+=) для добавления элемента в начало списка
words = ['welcome', 'to', 'bemind.gitbook.io']
prefix = ['hello']

prefix += words
print(prefix)

# Вывод: ['hello', 'welcome', 'to', 'bemind.gitbook.io']

В следующем разделе вы узнаете, как использовать срезы списков для добавления к началу списка в Python.

Использование среза списка для добавления к списку Python

Этот метод может показаться немного неловким, но он также может быть полезным способом добавить элемент в начало списка. Мы присваиваем список с одним значением срезу [:0] другого списка. Это заставляет элемент добавляться перед 0 элементом.

Давайте рассмотрим пример:

# Использование среза списка для добавления элемента в начало списка в Python
words = ['welcome', 'to', 'bemind.gitbook.io']
words[:0] = ['hello']

print(words)

# Вывод: ['hello', 'welcome', 'to', 'bemind.gitbook.io']

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

Использование Deque для добавления к списку Python

Часть невероятно универсальной библиотеки collections – это класс deque. Этот класс представляет собой двухстороннюю очередь, аналогичную стекам или очередям в других языках программирования. Преимущество заключается в том, что он позволяет добавлять элементы слева, не вызывая смещение всех значений в памяти.

Взглянем на пример:

# Использование deque для добавления элемента в начало списка в Python
from collections import deque
words = deque(['welcome', 'to', 'bemind.gitbook.io'])
words.appendleft('hello')

print(words)

# Вывод: ['hello', 'welcome', 'to', 'bemind.gitbook.io']

Преимущество этого подхода заметно при работе с большими списками. С меньшими списками вы можете не заметить выгоды, но важно помнить о производительности.

Заключение

В этом уроке вы узнали, как добавлять элементы в начало списка Python. Сначала вы узнали, почему добавление в начало списка может быть проблематичным. Затем вы узнали, как использовать три разных метода списка, включая .insert(), оператор + и индексирование списка для добавления в начало списка. Наконец, вы узнали, как использовать объект deque из коллекций для добавления в начало списка наиболее эффективно с точки зрения использования памяти.

Дополнительные ресурсы

Чтобы узнать больше по смежным темам, ознакомьтесь с ниже приведенными учебниками:

Last updated