Метод list.pop() в Python, получение с удалением элемент списка
Прочитать значение элемента списка по индексу, а затем удалить его
Синтаксис:
sequence.pop(i)
Параметры:
- sequence — изменяемый тип последовательности,
- i — индекс в последовательности, целое число.
Результат:
- значение элемента последовательности с индексом i
Описание:
Метод позволяет получить элемент по индексу удаляя его из последовательности. Метод sequence.pop() возвращает значение элемента с индексом i , а также удаляет его из последовательности sequence .
Необязательный аргумент — индекс i по умолчанию равен -1 . Так что по умолчанию эта операция производит действие с последним элементом последовательности.
Метод sequence.pop() вызывает IndexError , когда значение индекса i находится за пределами длины последовательностями len(sequence) .
Эта операция поддерживаются изменяемыми типами последовательностей.
Методами sequence.pop() и sequence.append() изменяемых последовательностей, можно организовать алгоритм стека.
Примеры использования list.pop() :
>>> x = [2, 0, 3, 12, 'foo', 15, 100, 18] >>> x.pop() # 18 >>> x # [2, 0, 3, 12, 'foo', 15, 100] >>> x.pop(0) # 2 >>> x # [0, 3, 12, 'foo', 15, 100] >>> x.pop(2) # 12 >>> x # [0, 3, 'foo', 15, 100] >>> x.pop(2) # 'foo' >>> x # [0, 3, 15, 100] >>> x.pop(10) # Traceback (most recent call last): # File "", line 1, in # IndexError: pop index out of range
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Изменение/замена элемента списка по индексу
- Изменение части списка операцией среза
- Изменение списка срезом c заданным шагом
- Удаление части списка операцией среза
- Удаление части списка по срезу с заданным шагом
- Метод list.append(), добавляет значение в конец списка
- Метод list.clear(), очищает список
- Метод list.copy(), копия списка
- Метод list.extend(), расширяет список другой последовательностью
- Расширение списка его содержимым
- Метод list.insert(), вставить элемент по индексу
- Метод list.pop(), получение с удалением элемент списка
- Метод list.remove(), удаление элемента списка по значению
- Метод list.reverse(), разворачивает элементы списка
- Удаление элемента списка по индексу
- Удаление дубликатов из списка Python с сохранением очередности
Методы списков Python
Для добавления множества элементов используйте extend() . Внимание: Данный метод модифицирует исходный объект на месте, возвращая при этом None .
list.clear( i ) ¶
Удаляет из списка все имеющиеся в нём значения.
my_list = [1, 2, 3]my_list.clear() # Nonemy_list # []
Действие метода эквивалентно выражению del my_list[:] .
list.copy() ¶
Возвращает копию списка. Внимание: Возвращаемая копия является поверхностной (без рекурсивного копирования вложенных элементов).
my_list = [1, 2, 3]my_list_copy = my_list.copy() # [1, 2, 3]my_list # []
Действие метода эквивалентно выражению my_list[:] .
list.count(x) ¶
random_list = [4, 1, 5, 4, 10, 4]random_list.count(4) # 3
Метод count считает количество значений x в списке.
list.extend(iterable) ¶
Дополняет список элементами из указанного объекта.
- it : Объект, поддерживающий итерирование, элементами которого требуется дополнить список.
my_list = []my_list.extend([1, 2, 3]) # Nonemy_list # [1, 2, 3]my_list.extend('add') # Nonemy_list # [1, 2, 3, 'a', 'd', 'd']
Для добавления единственного элемента используйте append() .
Внимание: Данный метод модифицирует исходный объект на месте, возвращая при этом None .
list.index(x , start , end ) ¶
Метод возвращает положение первого индекса, со значением х . Также можно указать границы поиска start и end .
list.insert(i, x) ¶
Вставляет указанный элемент перед указанным индексом
- i : Позиция (индекс), перед которой требуется поместить элемент. Нумерация ведётся с нуля. Поддерживается отрицательная индексация.
- x : Элемент, который требуется поместить в список.
my_list = [1, 3] my_list.insert(1, 2)my_list # [1, 2, 3] my_list.insert(-1, 4)my_list # [1, 2, 4, 3]
Внимание: Данный метод модифицирует исходный объект на месте, возвращая при этом None .
list.pop( i ) ¶
Возвращает элемент на указанной позиции , удаляя его из списка.
- i=None : Позиция искомого элемента в списке (целое число). Если не указана, считается что имеется в виду последний элемент списка. Отрицательные числа поддерживаются.
my_list = [1, 2, 3, 4, 5]last = my_list.pop() # 5my_list # [1, 2, 3, 4]second = my_list.pop(-3) # 2my_list # [1, 3, 4]first = my_list.pop(0) # 1my_list # [3, 4]
Чтобы удалить элемент из списка не возвращая его, воспользуйтесь list.remove() .
list.remove(x) ¶
Удаляет из списка указанный элемент.
- x : Элемент, который требуется удалить из списка. Если элемент отсутствует в списке, возбуждается ValueError . Удаляется только первый обнаруженный в списке элемент, значение которого совпадает со значением переданного в метод.
my_list = [1, 3] my_list.remove(1)my_list # [3] my_list.remove(4) # ValueError
Внимание: Данный метод модифицирует исходный объект на месте, возвращая при этом None .
list.reverse() ¶
Перестраивает элементы списка в обратном порядке.
my_list = [1, 'two', 'a', 4]my_list.reverse() # Nonemy_list # [4, 'a', 'two', 1]
Внимание: Данный метод модифицирует исходный объект на месте, возвращая при этом None .
list.sort(key=None, reverse=False) ¶
Сортирует элементы списка на месте.
- key=None : Функция, принимающая аргументом элемент, используемая для получения из этого элемента значения для сравнения его с другими.
- reverse=False : Флаг, указывающий следует ли производить сортировку в обратном порядке.
my_list = [1, 'two', 'a', 4, 'a']# Попытка упорядочить/сравнить несравнимые типы вызовет исключениеmy_list.sort() # TypeError: unorderable types: str() # Отсортируем «вручную», так чтобы 'а' были в конце.my_list.sort(key=lambda val: val == 'a') # None # Фактически мы отсортировали в соответствии # с маской [False, False, False, True, True]my_list # ['two', 4, 1, 'a', 'a']
Внимание: Данный метод модифицирует исходный объект на месте, возвращая при этом None .
Хотите выучить Python на практике?
Списки в Python
Всем привет! В этой статье мы познакомимся с методами для работы со списками в python . Но сначала вспомним, что такое список? Список — это изменяемый и последовательный тип данных. Это значит, что мы можем добавлять, удалять и изменять любые элементы списка.
Начнем с метода append() , который добавляет элемент в конец списка:
# Создаем список, состоящий из четных чисел от 0 до 8 включительно
numbers = list ( range ( 0 , 10 , 2 ))
# Добавляем число 200 в конец списка
numbers. append ( 200 )
print (numbers)
# [0, 2, 4, 6, 8, 200]
numbers. append ( 1 )
numbers. append ( 2 )
numbers. append ( 3 )
print (numbers)
# [0, 2, 4, 6, 8, 200, 1, 2, 3]
Мы можем передавать методу append() абсолютно любые значения:
all_types = [ 10 , 3.14 , ‘Python’ , [ ‘I’ , ‘am’ , ‘list’ ]]
all_types. append ( 1024 )
all_types. append ( ‘Hello world!’ )
all_types. append ([ 1 , 2 , 3 ])
print (all_types)
# [10, 3.14, ‘Python’, [‘I’, ‘am’, ‘list’], 1024, ‘Hello world!’, [1, 2, 3]]
Метод append() отлично выполняет свою функцию. Но, что делать, если нам нужно добавить элемент в середину списка? Это умеет метод insert () . Он добавляет элемент в список на произвольную позицию. insert() принимает в качестве первого аргумента позицию, на которую нужно вставить элемент, а вторым — сам элемент.
# Создадим список чисел от 0 до 9
numbers = list ( range ( 10 ))
# Добавление элемента 999 на позицию с индексом 0
numbers. insert ( 0 , 999 )
print (numbers)
# [999, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers. insert ( 2 , 1024 )
print (numbers)
# [999, 0, 1024, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers. insert ( 5 , ‘Засланная строка-шпион’ )
print (numbers)
# [999, 0, 1024, 1, 2, ‘Засланная строка-шпион’, 3, 4, 5, 6, 7, 8, 9]
Отлично! Добавлять элементы в список мы научились, осталось понять, как их из него удалять. Метод pop() удаляет элемент из списка по его индексу:
numbers = list ( range ( 10 ))
print (numbers)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Удаляем первый элемент
numbers. pop ( 0 )
print (numbers)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers. pop ( 0 )
print (numbers)
# [2, 3, 4, 5, 6, 7, 8, 9]
numbers. pop ( 2 )
print (numbers)
# [2, 3, 5, 6, 7, 8, 9]
# Чтобы удалить последний элемент, вызовем метод pop без аргументов
numbers. pop ()
print (numbers)
# [2, 3, 5, 6, 7, 8]
numbers. pop ()
print (numbers)
# [2, 3, 5, 6, 7]
Теперь мы знаем, как удалять элемент из списка по его индексу. Но что, если мы не знаем индекса элемента, но знаем его значение? Для такого случая у нас есть метод remove() , который удаляет первый найденный по значению элемент в списке.
all_types = [ 10 , ‘Python’ , 10 , 3.14 , ‘Python’ , [ ‘I’ , ‘am’ , ‘list’ ]]
all_types. remove ( 3.14 )
print (all_types)
# [10, ‘Python’, 10, ‘Python’, [‘I’, ‘am’, ‘list’]]
all_types. remove ( 10 )
print (all_types)
# [‘Python’, 10, ‘Python’, [‘I’, ‘am’, ‘list’]]
all_types. remove ( ‘Python’ )
print (all_types) # [10, ‘Python’, [‘I’, ‘am’, ‘list’]]
А сейчас немного посчитаем, посчитаем элементы списка с помощью метода count()
numbers = [ 100 , 100 , 100 , 200 , 200 , 500 , 500 , 500 , 500 , 500 , 999 ]
print (numbers. count ( 100 ))
# 3
print (numbers. count ( 200 ))
# 2
print (numbers. count ( 500 ))
# 5
print (numbers. count ( 999 ))
# 1
В программировании, как и в жизни, проще работать с упорядоченными данными, в них легче ориентироваться и что-либо искать. Метод sort() сортирует список по возрастанию значений его элементов.
numbers = [ 100 , 2 , 11 , 9 , 3 , 1024 , 567 , 78 ]
numbers. sort ()
print (numbers)
# [2, 3, 9, 11, 78, 100, 567, 1024]
fruits = [ ‘Orange’ , ‘Grape’ , ‘Peach’ , ‘Banan’ , ‘Apple’ ]
fruits. sort ()
print (fruits)
# [‘Apple’, ‘Banan’, ‘Grape’, ‘Orange’, ‘Peach’]
Мы можем изменять порядок сортировки с помощью параметра reverse . По умолчанию этот параметр равен False
fruits = [ ‘Orange’ , ‘Grape’ , ‘Peach’ , ‘Banan’ , ‘Apple’ ]
fruits. sort ()
print (fruits)
# [‘Apple’, ‘Banan’, ‘Grape’, ‘Orange’, ‘Peach’]
fruits. sort ( reverse = True )
print (fruits)
# [‘Peach’, ‘Orange’, ‘Grape’, ‘Banan’, ‘Apple’]
Иногда нам нужно перевернуть список, не спрашивайте меня зачем. Для этого в самом лучшем языке программирования на этой планете JavaScr..Python есть метод reverse() :
numbers = [ 100 , 2 , 11 , 9 , 3 , 1024 , 567 , 78 ]
numbers. reverse ()
print (numbers)
# [78, 567, 1024, 3, 9, 11, 2, 100]
fruits = [ ‘Orange ‘, ‘Grape’ , ‘Peach’ , ‘Banan’ , ‘Apple’ ]
fruits. reverse ()
print (fruits)
# [‘Apple’, ‘Banan’, ‘Peach’, ‘Grape’, ‘Orange’]
Допустим, у нас есть два списка и нам нужно их объединить. Программисты на C++ cразу же кинулись писать циклы for , но мы пишем на python , а в python у списков есть полезный метод extend() . Этот метод вызывается для одного списка, а в качестве аргумента ему передается другой список, extend() записывает в конец первого из них начало второго:
fruits = [ ‘Banana’ , ‘Apple’ , ‘Grape’ ]
vegetables = [ ‘Tomato’ , ‘Cucumber’ , ‘Potato’ , ‘Carrot’ ]
fruits. extend (vegetables)
print (fruits)
# [‘Banana’, ‘Apple’, ‘Grape’, ‘Tomato’, ‘Cucumber’, ‘Potato’, ‘Carrot’]
В природе существует специальный метод для очистки списка — clear()
fruits = [ ‘Banana’ , ‘Apple’ , ‘Grape’ ]
vegetables = [ ‘Tomato’ , ‘Cucumber’ , ‘Potato’ , ‘Carrot’ ]
fruits. clear ()
vegetables. clear ()
print (fruits)
# []
print (vegetables)
# []
Осталось совсем чуть-чуть всего лишь пара методов, так что делаем последний рывок! Метод index() возвращает индекс элемента. Работает это так: вы передаете в качестве аргумента в index() значение элемента, а метод возвращает его индекс:
fruits = [ ‘Banana’ , ‘Apple’ , ‘Grape’ ]
print (fruits. index ( ‘Apple’ ))
# 1
print (fruits. index ( ‘Banana’ ))
# 0
print (fruits. index ( ‘Grape’ ))
# 2
Финишная прямая! Метод copy() , только не падайте, копирует список и возвращает его брата-близнеца. Вообще, копирование списков — это тема достаточно интересная, давайте рассмотрим её по-подробнее.
Во-первых, если мы просто присвоим уже существующий список новой переменной, то на первый взгляд всё выглядит неплохо:
fruits = [ ‘Banana’ , ‘Apple’ , ‘Grape’ ]
new_fruits = fruits
print (fruits)
# [‘Banana’, ‘Apple’, ‘Grape’]
print (new_fruits)
# [‘Banana’, ‘Apple’, ‘Grape’]
Но есть одно маленькое «НО»:
fruits = [ ‘Banana’ , ‘Apple’ , ‘Grape’ ]
new_fruits = fruits
fruits. pop ()
print (fruits)
# [‘Banana’, ‘Apple’]
print (new_fruits)
# Внезапно, из списка new_fruits исчез последний элемент
# [‘Banana’, ‘Apple’]
При прямом присваивании списков копирования не происходит. Обе переменные начинают ссылаться на один и тот же список! То есть если мы изменим один из них, то изменится и другой. Что же тогда делать? Пользоваться методом copy() , конечно:
fruits = [ ‘Banana’ , ‘Apple’ , ‘Grape’ ]
new_fruits = fruits. copy ()
fruits. pop ()
print (fruits)
# [‘Banana’, ‘Apple’]
print (new_fruits)
# [‘Banana’, ‘Apple’, ‘Grape’]
Отлично! Но что если у нас список в списке? Скопируется ли внутренний список с помощью метода copy() — нет:
fruits = [ ‘Banana’ , ‘Apple’ , ‘Grape’ , [ ‘Orange’ , ‘Peach’ ]]
new_fruits = fruits. copy ()
fruits[ — 1 ]. pop ()
print (fruits)
# [‘Banana’, ‘Apple’, ‘Grape’, [‘Orange’]]
print (new_fruits)
# [‘Banana’, ‘Apple’, ‘Grape’, [‘Orange’]]
Что такое pop в Python?
В Python, функция pop() предназначена для удаления и возврата элемента из списка. Она может использоваться с как списками, так и с другими структурами данных, такими как стеки и очереди. Функция pop() позволяет нам удалить элемент из определенного индекса в списке или с удалением последнего элемента, если индекс не указан. Давайте рассмотрим несколько примеров, чтобы более полно понять, как работает функция pop() в Python.
Пример 1: Удаление элемента по индексу
fruits = ['яблоко', 'банан', 'груша', 'апельсин'] removed_fruit = fruits.pop(1) print(fruits) # ['яблоко', 'груша', 'апельсин'] print(removed_fruit) # банан
В этом примере мы создали список «fruits» с несколькими элементами. Затем мы использовали функцию pop() с аргументом 1, что означает, что мы хотим удалить элемент с индексом 1 из списка. Таким образом, функция pop() удаляет элемент «банан» и возвращает его значение. Мы затем выводим измененный список и значение удаленного элемента.
Пример 2: Удаление последнего элемента
cars = ['Мерседес', 'БМВ', 'Ауди', 'Тойота'] removed_car = cars.pop() print(cars) # ['Мерседес', 'БМВ', 'Ауди'] print(removed_car) # Тойота
В этом примере мы использовали функцию pop() без аргументов, поэтому она удаляет последний элемент списка «cars». Функция pop() также возвращает значение удаленного элемента, которое мы выводим на экран вместе с измененным списком «cars». Мы также можем использовать функцию pop() для работы со стеками и очередями в Python. Например, при использовании списка в качестве стека, мы можем использовать функцию pop() для удаления и возврата последнего элемента списка.
Пример 3: Работа со стеком
stack = [] stack.append(10) stack.append(20) stack.append(30) print(stack.pop()) # 30 print(stack.pop()) # 20 print(stack.pop()) # 10
В этом примере мы создали пустой список «stack» и используем метод append() для добавления элементов в стек. Затем мы используем функцию pop() для удаления и возврата элементов из стека в обратном порядке. В результате мы получаем элементы стека в обратном порядке, начиная с последнего добавленного элемента. В заключение, функция pop() в Python позволяет нам удалить и возвратить элемент из списка, стека или очереди. Она удобно и эффективно работает с различными структурами данных. Помните, что при использовании функции pop() с удалением элемента из списка, последующие элементы смещаются, чтобы заполнить получившуюся пустую ячейку.
