Remove: примеры (PYTHON)

Использование функции remove для обработки списков в Python
Раздел: Списки, Модификация коллекций
remove(value): None

Описание функции remove

Метод remove() является встроенным методом списков (list) в Python и предназначен для удаления первого вхождения указанного значения из списка. Этот метод используется, когда необходимо удалить элемент по его значению, а не по индексу позиции в списке.

Аргументы:

Метод принимает один обязательный аргумент: value - значение, которое требуется найти и удалить из списка. Если в списке присутствует несколько одинаковых значений, удаляется только первое с начала списка.

Возвращаемое значение:

Метод remove() не возвращает значение в качестве результата. Возвращаемым значением является None. Он изменяет исходный список на месте.

Краткие примеры использования

Простое удаление элемента:

numbers = [10, 20, 30, 40, 20]
numbers.remove(20)
print(numbers)
[10, 30, 40, 20]

Попытка удалить несуществующее значение приводит к ошибке:

words = ['apple', 'banana']
words.remove('orange')
ValueError: list.remove(x): x not in list

Удаление элемента разных типов:

mixed = [1, 'text', 3.14, True]
mixed.remove('text')
print(mixed)
[1, 3.14, True]

Похожие функции в Python

  • del: Оператор, удаляющий элемент по индексу или срез. del my_list[2]. Используется, когда известна позиция элемента.
  • pop(): Удаляет элемент по индексу и возвращает его значение. item = my_list.pop(1). Полезен, когда нужно получить удаляемый элемент.
  • clear(): Удаляет все элементы из списка. my_list.clear() делает список пустым.
  • Фильтрация (list comprehension, filter): Для удаления всех вхождений определенного значения или элементов по условию. Например, new_list = [x for x in old_list if x != 'value'].

Аналоги в других языках программирования

JavaScript: Используют splice(index, 1) по индексу или фильтрацию. Прямого аналога remove по значению нет.

let arr = [10, 20, 30];
let index = arr.indexOf(20);
if (index > -1) arr.splice(index, 1);
console.log(arr); // [10, 30]

Java (ArrayList): Метод remove(Object o) удаляет первое вхождение объекта.

import java.util.ArrayList;
ArrayList list = new ArrayList<>();
list.add(5); list.add(10);
list.remove(Integer.valueOf(5)); // Удаляет элемент 5
System.out.println(list); // [10]

PHP: Функция array_splice() по индексу или unset() с поиском ключа через array_search().

$arr = [5, 10, 15];
$key = array_search(10, $arr);
if ($key !== false) unset($arr[$key]);
print_r($arr); // [0 => 5, 2 => 15]

C# (List): Метод Remove(T item) удаляет первое вхождение элемента.

using System.Collections.Generic;
var list = new List { 1, 2, 3, 2 };
list.Remove(2);
Console.WriteLine(string.Join(", ", list)); // 1, 3, 2

Типичные ошибки

Основная ошибка - попытка удалить элемент, отсутствующий в списке.

data = [1, 2, 3]
data.remove(4)
ValueError: list.remove(x): x not in list

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

data = [1, 2, 3]
if 4 in data:
    data.remove(4)
else:
    print('Элемент не найден')
Элемент не найден

Ошибки при изменении списка во время итерации по нему:

lst = [1, 2, 3, 2, 4]
for x in lst:
    if x == 2:
        lst.remove(x) # Непредсказуемое поведение
print(lst)
[1, 3, 2, 4] # Второе значение 2 не удалено

История изменений

Метод list.remove() существует с ранних версий Python и не претерпевал значительных изменений в своей основной функциональности. В последних версиях Python изменения касаются только общих улучшений стабильности и производительности языка, но не специфичны для этого метода.

Расширенные примеры

Удаление элемента в списке кортежей по значению одного из элементов:

Пример python
items = [('a', 1), ('b', 2), ('c', 3)]
target = ('b', 2)
if target in items:
    items.remove(target)
print(items)
[('a', 1), ('c', 3)]

Удаление элемента из списка, содержащего изменяемые объекты (например, другие списки):

Пример python
matrix = [[1, 2], [3, 4], [5, 6]]
matrix.remove([3, 4])
print(matrix)
[[1, 2], [5, 6]]

Использование remove() внутри генератора списка для удаления нескольких разных значений:

Пример python
source = [1, 2, 3, 4, 5, 6]
to_remove = [2, 4, 6]
for val in to_remove:
    if val in source:
        source.remove(val)
print(source)
[1, 3, 5]

Работа с пользовательскими классами. Для корректного удаления должен быть определен метод __eq__.

Пример python
class Book:
    def __init__(self, title):
        self.title = title
    def __eq__(self, other):
        return self.title == other.title

library = [Book('Война и мир'), Book('Преступление и наказание')]
library.remove(Book('Война и мир'))
print([book.title for book in library])
['Преступление и наказание']

питон remove function comments

En
Remove Remove first occurrence