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

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

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

Содержание

* [Проблема с добавлением списка Python](#problema-s-dobavleniem-spiska-python)
* [Использование вставки для добавления к списку Python](#ispolzovanie-vstavki-dlya-dobavleniya-k-spisku-python)
* [Использование оператора + для добавления к списку Python](#ispolzovanie-operatora--dlya-dobavleniya-k-spisku-python)
* [Использование среза списка для добавления к списку Python](#ispolzovanie-sreza-spiska-dlya-dobavleniya-k-spisku-python)
* [Использование Deque для добавления к списку Python](#ispolzovanie-deque-dlya-dobavleniya-k-spisku-python)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

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

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

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

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

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

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

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

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

print(words)

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

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

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

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

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

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

words = prefix + words
print(words)

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

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

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

prefix += words
print(prefix)

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

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

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

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

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

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

print(words)

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

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

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

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

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

```python
# Использование 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` из коллекций для добавления в начало списка наиболее эффективно с точки зрения использования памяти.

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

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

* Как добавлять к спискам в Python — 4 простых метода!
* Python Defaultdict: обзор и примеры
* Как использовать именованные кортежи Python
* [Официальная документация: Коллекции deque](https://docs.python.org/3/library/collections.html#collections.deque)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/python/python-lists/dobavit-v-nachalo-spiska-v-python-vstavit-v-nachalo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
