Append: примеры (PYTHON)
append(object): NoneОписание функции append
Метод append() принадлежит типу данных list (список) в Python. Он предназначен для добавления одного нового элемента в конец существующего списка. Это один из основных способов модификации списков на месте.
Когда используется: Метод применяется, когда требуется расширить список одним элементом. Типичные сценарии включают построение списков в цикле, сбор данных или добавление итогового значения.
Синтаксис и аргументы:list.append(item)
Метод принимает один обязательный аргумент item. Это может быть объект любого типа данных (целое число, строка, другой список, словарь, пользовательский объект и т.д.). Элемент добавляется в конец списка в том виде, в котором передан.
Возвращаемое значение: Метод не возвращает новое значение. Он изменяет исходный список напрямую. Возвращаемым значением является None. Поэтому конструкция new_list = old_list.append(x) приведет к тому, что new_list будет иметь значение None.
Базовые примеры использования
Добавление элемента простого типа в список.
numbers = [1, 2, 3]
numbers.append(4)
print(numbers)[1, 2, 3, 4]
Добавление элемента составного типа. В список добавляется один элемент - другой список.
data = [10, 20]
data.append([30, 40])
print(data)[10, 20, [30, 40]]
Метод всегда возвращает None.
my_list = []
result = my_list.append('test')
print(f'Список: {my_list}')
print(f'Результат метода: {result}')
print(result is None)Список: ['test'] Результат метода: None True
Похожие методы для списков в Python
list.extend(iterable) - добавляет в конец списка не один элемент, а все элементы из переданного итерируемого объекта (списка, кортежа, строки). Эффективен для объединения списков.
a = [1, 2]
a.extend([3, 4])
print(a) # [1, 2, 3, 4]list.insert(index, item) - вставляет элемент на определенную позицию по индексу, а не только в конец. Требует больше вычислительных ресурсов для операций в начале списка.
a = [1, 3]
a.insert(1, 2)
print(a) # [1, 2, 3]Сравнение: append(x) добавляет объект x целиком как один элемент. extend([x]) добавит элементы итерируемого объекта, то есть для добавления одного элемента x потребуется обернуть его в список. insert(len(list), x) работает аналогично append(x), но менее читаем.
Аналоги функции в других языках
JavaScript: Метод push() для массивов. В отличие от Python, возвращает новую длину массива.
let arr = [1, 2];
let newLength = arr.push(3);
console.log(arr); // [1, 2, 3]
console.log(newLength); // 3PHP: Функция array_push(). Может добавлять несколько элементов. Возвращает новое количество элементов в массиве.
$arr = [1, 2];
$count = array_push($arr, 3);
echo json_encode($arr); // [1,2,3]
echo $count; // 3Java (ArrayList): Метод add(). Аналогичен по действию, возвращает boolean (всегда true для ArrayList).
import java.util.ArrayList;
ArrayList list = new ArrayList<>();
list.add(1);
list.add(2);
System.out.println(list); // [1, 2] C# (List<T>): Метод Add(). Возвращает void (аналог None).
using System.Collections.Generic;
var list = new List {1, 2};
list.Add(3);
// list = [1, 2, 3] Go: Встроенная функция append(). Работает со срезами (slices), возвращает новый срез (оригинальный может остаться неизменным, если не хватило емкости).
package main
import "fmt"
func main() {
slice := []int{1, 2}
slice = append(slice, 3) // важно переприсвоить
fmt.Println(slice) // [1 2 3]
}Kotlin: Метод add() для изменяемых списков (MutableList). Возвращает true.
val list = mutableListOf(1, 2)
list.add(3)
println(list) // [1, 2, 3]Lua: Функция table.insert(). По умолчанию добавляет элемент в конец таблицы, представленной как массив.
local tbl = {1, 2}
table.insert(tbl, 3)
print(table.concat(tbl, ', ')) -- 1, 2, 3SQL: Прямого аналога нет. Для добавления строки в таблицу используется оператор INSERT, что концептуально отличается от работы со списками в памяти.
Распространенные ошибки
Путаница с возвращаемым значением. Ожидание, что метод вернет измененный список.
# Неправильно
my_list = [1, 2]
new_list = my_list.append(3)
print(new_list) # NoneNone
Попытка использования метода на объекте, не являющемся списком.
# Неправильно
my_tuple = (1, 2)
my_tuple.append(3) # AttributeErrorAttributeError: 'tuple' object has no attribute 'append'
Ошибка при добавлении несуществующего элемента или результата функции, которая ничего не возвращает.
def foo():
print('Hello')
# Функция не возвращает значение (возвращает None)
items = [1, 2]
items.append(foo()) # В список добавляется None, а не функция foo
print(items)Hello [1, 2, None]
Намерение добавить несколько элементов по отдельности, но передача их одним кортежем или списком, что приводит к добавлению одной коллекции.
# Возможно, имелось в виду extend()
letters = ['a', 'b']
letters.append(('c', 'd'))
print(letters) # ['a', 'b', ('c', 'd')], а не ['a', 'b', 'c', 'd']['a', 'b', ('c', 'd')]Изменения в последних версиях Python
Метод list.append() остается неизменным и стабильным на протяжении многих версий Python 3. Его поведение и сигнатура не претерпели изменений. В стандартной библиотеке Python методы, изменяющие структуры данных на месте, как правило, очень консервативны к изменениям для сохранения обратной совместимости.
Расширенные примеры применения
Использование для построения списков в цикле с условием.
evens = []
for i in range(10):
if i % 2 == 0:
evens.append(i)
print(evens)[0, 2, 4, 6, 8]
Добавление элементов разных типов, включая None и функции.
complex_list = []
complex_list.append(42)
complex_list.append('Строка')
complex_list.append(None)
complex_list.append(lambda x: x**2)
print(complex_list)
print(complex_list[3](5)) # Вызов лямбда-функции из списка[42, 'Строка', None,at 0x...>] 25
Создание многомерных структур (матриц).
matrix = []
for i in range(3):
row = []
for j in range(3):
row.append(i * 10 + j)
matrix.append(row)
print(matrix)[[0, 1, 2], [10, 11, 12], [20, 21, 22]]
Использование вместе с распаковкой последовательностей для условного добавления.
base = [1, 2]
additional = []
value = 3
# Добавим value и еще одно число, если условие верно
base.append(value)
if value > 2:
additional.append(value * 2)
base += additional
print(base)[1, 2, 3, 6]
Модификация списка во время его итерации. Требует осторожности, но возможна.
items = [1, 2]
for x in items[:]: # Итерируемся по копии списка
if x == 2:
items.append(3) # Добавляем в оригинальный список
print(items)[1, 2, 3]
Совместное применение append() и pop() для реализации стека (LIFO).
stack = []
stack.append('a') # push
stack.append('b')
print(stack.pop()) # pop
print(stack)b ['a']