Python список: вставка, присоединение и расширение коллекции
Добавление элементов в список в Python
Основным и наиболее эффективным способом добавления одного элемента в конец списка является метод append. Он модифицирует исходный список, добавляя переданный объект в качестве последнего элемента, и не возвращает новое значение (возвращает None).
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # [1, 2, 3, 4]Python list element (получение элемента списка в python)
Типичная ошибка: попытка присвоить результат append переменной. Поскольку метод возвращает None, это приведет к потере ссылки на список.
my_list = [1,2,3]
new_list = my_list.append(4)
print(new_list) # NonePython add to list (добавление элемента в список)
Правильно: вызывать append без присваивания.
Как добавить элемент в начало списка?
Для вставки на нулевую позицию применяется метод insert с индексом 0.
my_list = [2,3]
my_list.insert(0, 1)
print(my_list) # [1, 2, 3]
Python copy list (копирование списка в python)
Проблема: при использовании отрицательного индекса -1 элемент вставляется перед последним элементом, что не эквивалентно добавлению в конец. Для добавления в конец используйте append.
Как добавить несколько элементов в конец?
Метод extend принимает итерируемый объект и добавляет все его элементы по одному в конец списка.
my_list = [1,2]
my_list.extend([3,4])
print(my_list) # [1, 2, 3, 4]Python list extend (метод extend для списка)
Аналогично работает оператор +=:
my_list = [1,2]
my_list += [3,4]
print(my_list) # [1, 2, 3, 4]Python list reverse (реверс списка в python)
Распространенная ошибка: использование append для добавления нескольких элементов. Append добавляет переданный список как один элемент, создавая вложенный список.
my_list = [1,2]
my_list.append([3,4])
print(my_list) # [1, 2, [3, 4]]Python empty list (создание пустого списка)
Для добавления отдельных элементов используйте extend или +=.
Как вставить элемент на произвольную позицию?
Метод insert принимает индекс и значение. Если индекс больше длины списка, элемент добавляется в конец. Если отрицательный, отсчет идет от конца, но вставка происходит перед указанной позицией.
my_list = [10,20,30]
my_list.insert(1, 15) # [10, 15, 20, 30]
my_list.insert(100, 40) # [10, 15, 20, 30, 40]
my_list.insert(-1, 35) # [10, 15, 20, 30, 35, 40]Python list slice (срезы списков в python)
Как объединить два списка без изменения исходных?
Оператор + создает новый список, содержащий элементы обоих списков.
a = [1,2]
b = [3,4]
c = a + b
print(c) # [1,2,3,4]Python filter list (фильтрация списка с помощью filter)
Это не модифицирует a или b.
Как добавить элементы из любого итерируемого объекта (например, кортежа, строки, генератора)?
Метод extend подходит для любых итерируемых объектов. При передаче строки добавляются отдельные символы.
my_list = [1,2]
my_list.extend("abc")
print(my_list) # [1,2,'a','b','c']Python list function (функции для работы со списками)
Если требуется добавить строку как единый элемент, используйте append.
Как добавить элемент в середину списка через срез?
Срезы позволяют заменить часть списка. Чтобы вставить элемент, можно использовать пустой срез с нужной позиции.
my_list = [1,2,4,5]
my_list[2:2] = [3] # вставка на позицию 2
print(my_list) # [1,2,3,4,5]Python добавить элемент в массив (добавление элемента в конец списка (append) в python)
Аналогично можно вставить несколько элементов.
Как добавить элемент в список, используя распаковку?
Распаковка с помощью * позволяет создать новый список, включающий элементы исходного и новые.
original = [1,2]
new = [*original, 3, 4]
print(new) # [1,2,3,4]
Это не изменяет исходный список, а создает новый.
Расширенные примеры добавления элементов
1. Вставка перед последним элементом с помощью insert и отрицательного индекса
numbers = [10, 20, 30, 40]
numbers.insert(-1, 25)
print(numbers) # [10, 20, 30, 25, 40]
2. Добавление элементов из генератора с фильтрацией
even_squares = [x**2 for x in range(1,6) if x%2==0]
my_list = [0]
my_list.extend(even_squares)
print(my_list) # [0, 4, 16]
3. Использование среза для добавления в начало и конец
data = [2,3]
data[:0] = [1] # вставить в начало
data[len(data):] = [4,5] # вставить в конец (аналог extend)
print(data) # [1,2,3,4,5]
4. Добавление элементов кортежа с помощью +=
lst = [1,2]
lst += (3,4)
print(lst) # [1,2,3,4]
5. Ошибка при попытке цепочки вызовов append
lst = [1]
result = lst.append(2).append(3) # AttributeError: 'NoneType' object has no attribute 'append'
6. Добавление вложенного списка и его распаковка с помощью extend
nested = [[1,2],[3,4]]
flat = []
flat.extend(nested) # добавит два вложенных списка как элементы
print(flat) # [[1,2],[3,4]]
# Если нужно распаковать вложенные элементы, используйте цепочку extend
flat2 = []
for sub in nested:
flat2.extend(sub)
print(flat2) # [1,2,3,4]
7. Использование __iadd__ для добавления
lst = [1,2]
list.__iadd__(lst, [3,4])
print(lst) # [1,2,3,4]
8. Создание нового списка с помощью распаковки и изменение переменной
original = [1,2]
original = [*original, 3, 4] # new object assigned to original
print(original) # [1,2,3,4]
9. Добавление элемента в список с помощью метода __setitem__ через срез
lst = [1,2,5]
lst.__setitem__(slice(2,2), [3,4]) # вставить на позицию 2
print(lst) # [1,2,3,4,5]