# Python: Замена элемента в списке (6 различных способов)

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

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

К концу этого урока вы узнаете:

* Как использовать назначение списка для замены элемента в списке Python
* Как использовать циклы for и while для замены элемента в списке Python
* Как заменить несколько элементов в списке

Оглавление

* [Заменить элемент в списке Python по определенному индексу](#zamenit-element-v-spiske-python-po-opredelennomu-indeksu)
* [Заменить определенное значение в списке в Python с помощью цикла For](#zamenit-opredelennoe-znachenie-v-spiske-v-python-s-pomoshyu-cikla-for)
* [Заменить определенное значение в списке в Python с помощью List Comprehension](#zamenit-opredelennoe-znachenie-v-spiske-v-python-s-pomoshyu-list-comprehension)
* [Изменить все значения в списке в Python с помощью функции](#izmenit-vse-znacheniya-v-spiske-v-python-s-pomoshyu-funkcii)
* [Заменить несколько значений в списке Python](#zamenit-neskolko-znachenii-v-spiske-python)
* [Заменить несколько значений на несколько значений в списке Python](#zamenit-neskolko-znachenii-na-neskolko-znachenii-v-spiske-python)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Заменить элемент в списке Python по определенному индексу

[Списки Python](python-spiski-polnyi-obzor) упорядочены, что позволяет получить доступ к элементам (и изменить их), зная их индекс. Индексы в списках Python начинаются с 0 и идут до длины списка `-1.`

Вы также можете получить доступ к элементам, используя их отрицательный индекс. Отрицательный индекс начинается с `-1` для последнего элемента и идет по уменьшению. Чтобы узнать больше о индексации списков в Python, посмотрите мой детальный обзор [здесь](poisk-indeksa-v-spiske-python-naiti-pervoe-poslednee-ili-vse-vkhozhdeniya)

<figure><img src="http://datagy.io/wp-content/uploads/2021/09/How-does-Python-List-Indexing-Work-1024x575.png" alt="How does Python List Indexing Work" height="575" width="1024"><figcaption></figcaption></figure>

Если мы хотим заменить [элемент списка по определенному индексу](https://datagy.io/python-index-of-max-item-list/), мы можем просто напрямую присвоить новые значения

Давайте посмотрим, как это выглядит:

```python
# Заменить элемент по определенному индексу в списке Python
a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# Изменить первый элемент
a_list[0] = 10
print(a_list)
# Возвращает: [10, 2, 3, 4, 5, 6, 7, 8, 9]

# Изменить последний элемент
a_list[-1] = 99
print(a_list)
# Возвращает: [10, 2, 3, 4, 5, 6, 7, 8, 99]
```

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

**Хотите узнать, как использовать функцию Python `zip()` для итерации по двум спискам?** [Этот урок обучает](https://datagy.io/python-zip-lists/) тому, что именно делает функция `zip()` и показывает несколько креативных способов её использования.

### Заменить определенное значение в списке в Python с помощью цикла For

В Python списках мы можем легко изменять отдельные значения. Один из способов сделать это — использовать цикл for.

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

Давайте посмотрим, как это выглядит. В нашем списке слово `apple` написано с ошибкой. Мы хотим заменить его на правильный вариант.

```python
# Заменить определенный элемент в списке Python
a_list = ['aple', 'orange', 'aple', 'banana', 'grape', 'aple']

for i in range(len(a_list)):
    if a_list[i] == 'aple':
        a_list[i] = 'apple'

print(a_list)

# Возвращает: ['apple', 'orange', 'apple', 'banana', 'grape', 'apple']
```

Давайте посмотрим, что мы сделали здесь:

1. Мы перебираем каждый индекс в списке.
2. Если позиция индекса списка равна элементу, который мы хотим заменить, мы переназначаем его значение.

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

### Заменить определенное значение в списке в Python с помощью List Comprehension

Одним из ключевых свойств списковых включений в Python является возможность преобразования циклов for в более короткие включения. Давайте посмотрим, как с помощью спискового включения в Python можно заменить элемент в списке.

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

```python
# Заменить определенный элемент в списке Python с использованием list comprehension
a_list = ['aple', 'orange', 'aple', 'banana', 'grape', 'aple']

a_list = ['apple' if item == 'aple' else item for item in a_list]
print(a_list)

# Возвращает: ['apple', 'orange', 'apple', 'banana', 'grape', 'apple']
```

Здесь мы видим, что у списковых включений есть два основных преимущества по сравнению с циклами for:

1. Нам не нужно инициализировать пустой список
2. Понимание читается на относительно простом английском языке

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

### Изменить все значения в списке в Python с помощью функции

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

Давайте рассмотрим, как можно использовать подход с генерацией списков и превратить его в формулу:

```python
# Заменить определенный элемент в списке Python с использованием функции
a_list = ['aple', 'orange', 'aple', 'banana', 'grape', 'aple']

def replace_values(list_to_replace, item_to_replace, item_to_replace_with):
    return [item_to_replace_with if item == item_to_replace else item for item in list_to_replace]

replaced_list = replace_values(a_list, 'aple', 'apple')
print(replaced_list)

# Возвращает: ['apple', 'orange', 'apple', 'banana', 'grape', 'apple']

```

Здесь нам просто нужно передать список, элемент, который мы хотим заменить, и элемент, на который мы хотим его заменить. Название функции облегчает понимание того, что мы делаем, помогая нашим читателям лучше.

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

### Заменить несколько значений в списке Python

Может быть много раз, когда вам нужно заменить не один элемент, а несколько элементов. Это можно сделать довольно просто, используя метод цикла for, показанный ранее.

Давайте рассмотрим пример, в котором мы хотим заменить все известные опечатки в списке словом `typo`.

```python
# Заменить несколько элементов в списке Python на одно и то же значение
a_list = ['aple', 'ornge', 'aple', 'banana', 'grape', 'aple']
for i in range(len(a_list)):
    if a_list[i] in ['aple', 'ornge']:
        a_list[i] = 'typo'

print(a_list)
# Возвращает: ['typo', 'typo', 'typo', 'banana', 'grape', 'typo']
```

Подобно методу цикла for, мы проверяем, является ли элемент опечаткой, и заменяем его значение.

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

### Заменить несколько значений на несколько значений в списке Python

Следующий подход полезен, когда мы хотим заменить несколько значений одним и тем же значением. Но бывают случаи, когда необходимо заменить несколько значений на _разные_ значения.

Рассматривая наш пример, мы можем захотеть заменить все экземпляры наших опечаток на их правильное написание. Мы снова можем использовать цикл for, чтобы продемонстрировать, как это сделать.

Вместо использования одного оператора `if`, мы вложим несколько операторов `elif`, которые проверяют значение перед заменой.

```python
# Заменить несколько элементов в списке Python на разные значения
a_list = ['aple', 'ornge', 'aple', 'banana', 'grape', 'aple']
for i in range(len(a_list)):
    if a_list[i] == 'aple':
        a_list[i] = 'apple'
    elif a_list[i] == 'ornge':
        a_list[i] = 'orange'

print(a_list)
# Возвращает: ['apple', 'orange', 'apple', 'banana', 'grape', 'apple']
```

Нужно проверить, существует ли ключ в словаре Python? Ознакомьтесь с [этим учебником](https://datagy.io/python-check-if-key-value-dictionary/), который обучает пяти различным способам проверки существования ключа в словаре Python, включая возврат значения по умолчанию.

### Заключение

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

Чтобы узнать больше об индексировании списков в Python, ознакомьтесь с [официальной документацией здесь](https://docs.python.org/3/tutorial/datastructures.html).

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

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

* Pandas Replace: замена значений в Pandas Dataframe
* Python: выбор случайного элемента из списка
* Python: Объединение списков – Объединение списков (8 способов)
* Python: подсчет количества вхождений в список (6 способов)
