Предположим, есть такой список данных: «data = [2,4,6,7,8,10….]»; Мне нужно удалить 7 из данных и получить на выходе следующее: «[2,4,6,8,10]». Я покажу вам, как это можно сделать на Python.
В процессе работы над проектами веб-сайтов электронной коммерции, например, Flipkart, Amazon или Myntra, мне предстояло создать функцию удаления товаров из корзины. Изучая различные способы и техники удаления элемента из списка на Python, я обнаружил семь различных подходов.
- С помощью метода Remove()
- С помощью метода pop()
- С помощью ключевого слова del
- С помощью понимания списка
- С помощью метода Filter()
- С помощью нарезки списка
- С помощью метода Discard
С помощью метода Remove()
В Python для удаления элемента из списка мы будем использовать встроенный метод Remove(). Чтобы удалить элемент, необходимо передать его имя в качестве параметра методу. Метод найдет первое вхождение переданного значения и удалит его из исходного списка.
Синтаксис:
- list.remove(): этот метод полезен только для сбора списков и требует 1 параметра в качестве любых значений, таких как строка, число и т. д.
- Метод Remove() изменит исходный список в Python
- Если данного значения нет в списке, то появится такая ошибка
«ValueError: list.remove(x): x нет в списке»
Давайте рассмотрим один практический пример того, как удалить элемент из списка в Python с помощью метода Remove().
list_of_cities = ["New York", "Los Angeles","Beijing", "Houston", "Dallas", "Beijing"] # Removing an element from original list list_of_cities.remove("Beijing") print(list_of_cities)
В этом коде представлен список городов, в который дважды входит город «Пекин» под индексами 2 и 5. Чтобы удалить элемент с названием «Пекин», можно использовать метод remove(). Например, можно написать «list_of_cities.remove («Пекин»)».
Этот метод удалит только первое вхождение элемента, поэтому будет удалён только элемент под индексом 2.
С помощью метода pop()
Обычно метод pop() удаляет из коллекции последний элемент. Однако в Python вы можете использовать метод list.pop() с указанием индекса элемента, который нужно удалить из списка.
Синтаксис:
list.pop(index_position)
- list.pop(index_position): этот метод будет работать только для сбора списков, и это
- Он удалит элемент из исходного списка в Python на основе заданного значения индекса.
- Если вы не укажете какое-либо значение индекса, по умолчанию будет удален последний элемент из списка.
Давайте разберем этот метод на практическом примере удаления элементов из списка Python по индексу.
list_of_cars = ['tesla', 'toyota', 'bmw', 'ford'] user_input = input("Enter the car name you want to remove : ").lower() index_value = list_of_cars.index(user_input) print("Removed : ",list_of_cars.pop(index_value)) print("Updated List :",list_of_cars)
В этом коде мы создали список автомобилей и использовали данные, введённые пользователем, чтобы узнать, какую машину он хочет удалить.
Строка «user_input = input («Введите название автомобиля, который хотите удалить: «).lower()» означает, что мы запрашиваем у пользователя название автомобиля, который он хочет удалить, и преобразуем все символы в нижний регистр с помощью метода lower().
Затем мы создали переменную с именем index_value, чтобы получить индексную позицию значения user_input, используя метод list.index() «index_value = list_of_cars.index(user_input)».
Получив позицию индекса user_input, мы удалили этот элемент по его значению индекса, используя метод pop(), например: «list_of_cars.pop (index_value)»
С помощью ключевого слова del
В Python ключевое слово del используется для удаления элементов, объектов и переменных. С его помощью можно удалить один или несколько элементов.
Чтобы удалить элемент из списка в Python, необходимо использовать выражение разрезания списка.
Синтаксис:
del list[index_position]
- del list[index_position]: вы можете указать индексную позицию элемента, и он удалит этот элемент из исходного списка в Python.
Синтаксис для удаления нескольких элементов из списка:
del list[start_index : end_index + 1]
Здесь вы можете указать начальный индекс и конечный индекс для удаления нескольких элементов из списка в Python, и есть еще один вариант обновления в этом разрезе списка, например
del list[start_index: end_index + 1: шаги].
Давайте разберемся в этом на практических примерах удаления одного или нескольких элементов из списка.
customers_list = ["Alice", "Arthur", "Bob", "Carol", "Dave", "Frank", "Grace", "Harry"] del customers_list[3] print(customers_list)
В приведенном выше коде у нас есть один список имен клиентов, и мы пытаемся удалить элемент «del customer_list[3]» в третьей позиции индекса.
Давайте попробуем удалить несколько элементов из списка в Python:
customers_list = ["Alice", "Arthur", "Bob", "Carol", "Dave", "Frank", "Grace", "Harry"] del customers_list[0:4] print(customers_list)
В этом коде мы указали начальный индекс и конечный индекс как 0:4, и он удалит элементы из позиции индекса 0 в позицию индекса 3 «del customer_list[0:4]».
С помощью понимания списка
Если в Python нужно удалить все вхождения из списка, можно воспользоваться List Comprehension. В одной строке кода можно задать условия внутри цикла for и получить отфильтрованную копию исходного списка.
Важно отметить, что при использовании List Comprehension исходный список не изменяется.
Синтаксис:
filtered_list = [index for index in list if condition]
- Сначала он начнёт с цикла for «для индекса в списке» в этой строке, инициализирует переменную и пройдёт по каждому элементу внутри списка, а затем проверит условие,
«если условие».
list_of_states = ["Alabama","Fujian","Alaska", "Arizona", "Fujian","Connecticut", "Florida","Fujian", "Georgia","Fujian"] filtered_list = [state for state in list_of_states if state != "Fujian"] print(filtered_list)
В представленном коде у нас есть список штатов, в котором четыре раза встречается штат Фуцзянь. Мы хотим удалить все эти упоминания штата из списка. Для этого мы используем понимание списка, чтобы удалить все вхождения штата Фуцзянь.
Мы создали переменную filtered_list и инициализировали её внутри цикла for. Переменная state будет перебирать все элементы списка list_of_states. Это можно записать как «для state в list_of_states».
Затем мы добавили условие if state!= «Фуцзянь». Если state равно «Фуцзянь», то этот элемент не будет включён в filtered_list согласно нашему условию.
С помощью метода Filter()
Мы также можем использовать метод filter с лямбда-функцией, чтобы удалить элемент из списка в Python. Последовательность действий будет такой же, как и в предыдущем примере.
Синтаксис:
filter(function, collection)
- filter (function, collection). Этот метод будет применять условия к каждому элементу исходного списка.
- Кроме того, мы будем использовать лямбда-функцию в качестве первого аргумента для создания условия и включим list_name во второй аргумент filter().
Давайте разберемся в этом на практическом примере удаления элемента из списка в Python с помощью метода filter().
employees_data = ["Oliver", "Harry", "George","William","Harry"] print("Original List :", employees_data) filtered_list = filter(lambda employee: employee!='Harry',employees_data) print("Filtered List: ", list(filtered_list))
В представленном коде у нас есть список под названием «employee_data», из которого мы хотим удалить элемент «Гарри». Для этого мы используем метод filter().
Метод filter() принимает два параметра: функцию и коллекцию. В нашем случае мы передаём лямбда-функцию и список «employee_data». Лямбда-функция задаёт условие: если элемент списка не равен «Гарри», то он добавляется в новый список, который мы называем filtered_list.
Таким образом, мы использовали метод filter() для фильтрации списка «employee_data» и удаления из него элемента «Гарри».
С помощью нарезки списка
Мы также можем удалить элемент в Python с помощью нарезки списка. Это процесс изменения списка или удаления элементов на основе их позиции в списке.
Мы создадим новый список, в котором будем фильтровать элементы в соответствии с нашими требованиями. При этом он будет удалять элементы по одному за раз. Если в списке есть повторяющиеся элементы, то он удалит только первое вхождение данного значения.
Синтаксис:
list[start_index : end_index]
Мы хотим, чтобы значение start_index всегда было равно 0, а значение end_index определялось в зависимости от позиции элемента, указанного пользователем.
Рассмотрим, как можно удалить элемент из списка в Python с помощью срезов.
Employees_age = [23,34,65,32,42,46,34] user_input = int(input("Enter number to remove : ")) index_value = Employees_age.index(user_input) filtered_list = Employees_age[0:index_value] + Employees_age[index_value+1 : ] print(filtered_list)
В представленном коде у нас есть список возрастов сотрудников. Чтобы найти индекс элемента, который соответствует номеру, указанному пользователем, мы используем метод index(). Это можно сделать следующим образом.
«index_value = Сотрудники_возраст.index(user_input)».
Затем мы создали новый список с именем filtered_list, чтобы наши изменения не затронули исходный список. В этом новом списке мы будем выполнять операции с исходным списком.
Мы указали начальный индекс как 0, и он находит end_index как 1(index_value = 34) «Employees_age[0:index_value]», и мы объединяем его с другим срезом списка «Employees_age[index_value+1 : ]», где мы дали индекс value + 1 в качестве начальной точки, что означает 1 + 1, поэтому по умолчанию он начинается с 2 до последнего индекса списка.
С помощью метода Discard
Обычно мы используем метод `cancel()` для удаления элементов из набора, но в Python мы будем использовать его для удаления элемента из списка. Сначала мы преобразуем список в набор с помощью функции `set()`, затем удалим нужный элемент. После этого мы снова преобразуем набор в список с помощью функции `list()`.
Синтаксис:
set.discard(value)
- set.discard (value): предназначен для сбора множеств только для удаления элемента и требует 1 аргумент.
- Если вы укажете значение, которого нет внутри набора, оно вернет тот же набор, что и есть.
list_of_cities = ["New York", "Los Angeles","Beijing", "Houston", "Dallas", "Beijing"] print("Original List is :", list_of_cities) list_of_cities = set(list_of_cities) list_of_cities.discard("Beijing") list_of_cities= list(list_of_cities) print("After removing element :", list_of_cities)
Обратите внимание, что порядок элементов в списке изменится, если вы преобразуете его в коллекцию наборов.
В представленном коде у нас есть список штатов, и мы хотим удалить из него город Пекин. Для этого мы преобразуем исходный список в тип данных set, используя функцию set(). Получаем set(list_of_cities). Затем применяем метод ignore(), который позволяет удалить конкретное значение из списка. В данном случае мы используем list_of_cities.discard(«Beijing»), чтобы удалить город Пекин из списка.
Затем мы снова преобразуем его в список, используя такой конструктор списка.
«list_of_cities = список(список_городов)».