JavaRush /Курсы /Модуль 1: Python Core /Изменение списка

Изменение списка

Модуль 1: Python Core
5 уровень , 3 лекция
Открыта

5.1 Добавление элементов

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

Использование метода append()

Метод append() добавляет элемент в конец списка. Это самый простой и часто используемый метод для добавления одного элемента:


my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # Выведет [1, 2, 3, 4] 
        

Использование метода extend()

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


my_list = [1, 2, 3, 4]
my_list.extend([5, 6])
print(my_list)  # Выведет [1, 2, 3, 4, 5, 6]
        

Использование метода insert()

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


my_list = [1, 2, 3, 4, 5, 6]
my_list.insert(0, 0)
print(my_list)  # Выведет [0, 1, 2, 3, 4, 5, 6]
    

Добавление элементов с помощью оператора сложения

Списки также можно объединять с помощью оператора «+», что также приводит к добавлению элементов одного списка в другой:


my_list = [0, 1, 2, 3, 4, 5, 6]
my_list = my_list + [7, 8]
print(my_list)  # Выведет [0, 1, 2, 3, 4, 5, 6, 7, 8]
        

Особенности и предостережения

При использовании append() и extend() изменяется исходный список. Однако при использовании «+» создается новый список, поэтому если у вас где-то осталась ссылка на старый список, то он останется неизменным.

5.2 Прямое изменение элемента

В Python изменение элементов в списке является простой операцией благодаря мутабельности (изменяемости) списков. Это позволяет вам модифицировать списки по месту, не создавая новых копий. Вот как можно работать с этими возможностями:

Прямое изменение элементов

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


my_list = [1, 2, 3, 4]
my_list[2] = 30 
print(my_list)  # Выведет [1, 2, 30, 4] 
        

5.3 Присваивание диапазона элементов:

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

Использование срезов для присваивания

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


numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers[2:5] = [20, 30, 40]
print(numbers)  # Выведет [0, 1, 20, 30, 40, 5, 6, 7, 8, 9]
        

Количество элементов слева и справа от знака равенства не обязано совпадать.

Элементов справа может быть больше:


numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers[2:2] = [20, 30, 40]
print(numbers)  # Выведет [0, 1, 20, 30, 40, 2, 3, 4, 5, 6, 7, 8, 9]
        

Или меньше:


numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers[2:9] = [20, 30, 40]
print(numbers)  # Выведет [0, 1, 20, 30, 40, 9]
        

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

2
Задача
Модуль 1: Python Core, 5 уровень, 3 лекция
Недоступна
Кто хочет добавки?
Кто хочет добавки?
2
Задача
Модуль 1: Python Core, 5 уровень, 3 лекция
Недоступна
Стиратель
Стиратель
Комментарии (19)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Graf Vorontsov Уровень 17
10 июля 2026
my_list [3:6] = [number] * 3
Stanislav Уровень 10
20 августа 2026
а зачем * 3
Graf Vorontsov Уровень 17
21 августа 2026
Ци ми множимо наш лист, і в середині виходить не одне значеня а наприклад [7, 7, 7]
Олег Сычев Уровень 4
13 мая 2026
Вторая задача понравилась. Узнал, что оказывается недостаточно просто попросить у пользователя элемент - нужно вводимый элемент обернуть в кортеж или в список, иначе, если пользователь, например, введет не один символ, а несколько - например, слово "Привет" - введется несколько символов, что несоответствует ТЗ.
Алексей Тумель Уровень 21
3 мая 2026
во второй задаче некорректное условие. "по пятый" НЕ понятно включительно или нет?! В общем спойлер, срез подразумевается у них [2:5]
Anonymous #3447003 Уровень 17
26 июля 2026
а может наоборот корректно, показывает что списки начинаются с 0. и 5-й элемент это для юзера 5-й если считать с 1, а мы должны считать с 0
VasliyD Уровень 11
1 мая 2025
Решение my_list[2:5] = [el, el, el] не прошло, хотя вроде корректное🤔
Simona Hub Уровень 11
13 мая 2025
заменяет элементы с третьего по пятый на одно значение (1 элемент) а тут три непонятных элемента, который не юзер ввел а ты !!! [el, el, el] это должден вводить юзер что то типа такого: element = int(input()) numbers[3:5] = [element]
Шамиль Ахметов Уровень 31
25 апреля 2025
во второй задаче когда срезаем массив нужно добавить не просто элемент а элемент в массиве [элемент]
Mr.Robot Уровень 21 Expert
9 января 2025
Намек к решению второй задачи: вспоминаем про "иммутабельность" )
SWK Уровень 26
19 марта 2025
При чём тут иммутабельность? Проблема, в которую, как я предполагаю, упирается большинство студентов - то, что строка в пайтоне - массив (list) букв. Соответственно, нужно как-то исхитриться указать, что вставляется не массив в массив, а единое значение в массив.
Александр Уровень 19 Expert
5 января 2025
Внимание друзья, во второй задаче три элемента нужно заменить на один ! Строго один "77", а не два "7" и "7". И вот я не смог догадаться как это сделать. Простое присвоение срезу нового значения не работает, т.к. в качестве аргумента команды присваивания нужно использовать итерируемый список, и строка "77" воспринимается как два элемента. Решение как сделать строку одним элементом лежит на поверхности, но я не догадался, пришлось спрашивать у gpt. Вам говорить не буду, оставлю возможность подумать.
Optimus Уровень 1
17 февраля 2025
Так решение в примере в лекции
Виталий Уровень 21
12 декабря 2024
В лекции ошибка: должно быть: [0, 1, 20, 30, 40, 9] , а не # Выведет [0, 20, 30, 40, 9]
Anonymous #3527253 Уровень 21
4 декабря 2024
я честно в шоке: решение

my_list = [i for i in range(0, 10)]

new_element = input(f'Enter new value for elements: ')
for i in my_list[2:5]:
    my_list.append(new_element)

print(my_list)
не принято, НО принято решение вида (тоже не верное, кстати):

my_list = [i for i in range(0, 10)]
new_my_list = []
new_element = input(f'Enter new value for elements: ')
for i in my_list[2:5]:
    new_my_list.append(new_element)

my_list[2:5] = new_my_list

print(my_list)
Gunslinger Уровень 13
23 августа 2026
Всё логично. Если ты вставляешь str в слайс - пайтон будет вставлять его посимвольно. А если обернёшь в [] - всё сработает. arr[2:5] = input() <<< это твой первый вариант. arr[2:5] = [input()] <<< это твой второй вариант.
Anonymous #3527253 Уровень 21
4 декабря 2024
а можно условия задачи писать так, чтобы их можно было понять не с 10 попытки?

•	Программа должна запросить у пользователя значение для замены элементов с третьего по пятый.
•	Программа должна заменить элементы с третьего по пятый в списке на один элемент, введенный пользователем.
так мы и просим пользователя ввести 3 значения, а по факту оказывается нужно одно значение
Oleg Evtushenko Уровень 90
25 декабря 2024
там же чётко написано, что нужно заменить на один элемент!
Slevin Уровень 59
23 июня 2025
Это мягкая тренировка для будущего общение с заказчиками