Pop index out of range python ошибка

To get the final value of a list pop’ed, you can do it this way:

>>> l=range(8)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7]
>>> l.pop(4)                    # item at index 4
4
>>> l
[0, 1, 2, 3, 5, 6, 7]
>>> l.pop(-1)                   # item at end - equivalent to pop()
7
>>> l
[0, 1, 2, 3, 5, 6]
>>> l.pop(-2)                   # one left of the end 
5
>>> l
[0, 1, 2, 3, 6]
>>> l.pop()                     # always the end item
6
>>> l
[0, 1, 2, 3]

Keep in mind that pop removes the item, and the list changes length after the pop. Use negative numbers to index from the end of a list that may be changing in size, or just use pop() with no arguments for the end item.

Since a pop can produce these errors, you often see them in an exception block:

>>> l=[]
>>> try:
...    i=l.pop(5)
... except IndexError:
...    print "sorry -- can't pop that"
... 
sorry -- can't pop that

Автор оригинала: Chris.

Если вы похожи на меня, вы сначала попробуйте все в своем коде и исправить ошибки, как они приходят. Одна частая ошибка в Python – IndexError: Индекс списка вне диапазона Отказ Итак, что означает это сообщение об ошибке?

Ошибка ” Индекс списка вне диапазона «Возникает, если вы получаете доступ к недействительным индексам в вашем списке Python. Например, если вы пытаетесь получить доступ к элементу списка с индексом 100, но ваши списки состоят только из трех элементов, Python будет бросать indexError, рассказывая о том, что индекс списка не имеет диапазона Отказ

Вы хотите развивать навыки Хорошо округлый Python Professional То же оплачивается в процессе? Станьте питоном фрилансером и закажите свою книгу Оставляя крысиную гонку с Python На Amazon ( Kindle/Print )!

Давайте посмотрим на пример, где возникает эта ошибка:

lst = ['Alice', 'Bob', 'Carl']
print(lst[3])

Элемент с индексом 3 не существует в списке с тремя элементами. Это почему? Следующий график показывает, что максимальный индекс в вашем списке – 2. Вызов lst [2] потратил бы Третий Список элементов «Карл» Отказ Вы пытались получить доступ к третьему элементу с индексом 3? Это распространенная ошибка: индекс третьего элемента – 2, потому что индекс элемента первого списка составляет 0.

  • lst [0] -> Алиса
  • lst [1] -> Боб
  • lst [2] -> Карл
  • lst [3] -> ??? Ошибка ???

Попробуйте сами: Прежде чем я скажу вам, что делать с этим, попробуйте исправить код себя в нашей интерактивной оболочке Python:

Упражнение : Исправьте код в оболочке интерактивного кода, чтобы избавиться от сообщения об ошибке.

Итак, как вы можете исправить код? Python говорит вам, в какой строке и в каком списке возникает ошибка.

Чтобы прикрепить точную проблему, проверьте значение индекса непосредственно перед возникновением ошибки. Для достижения этого вы можете распечатать индекс, который вызывает ошибку, прежде чем использовать ее в списке. Таким образом, у вас будет неправильный индекс в оболочке прямо перед сообщением об ошибке.

Вот пример неправильного кода, который приведет к появлению ошибки:

# WRONG CODE
lst = ['Alice', 'Bob', 'Ann', 'Carl']

for i in range(len(lst)+1):
    lst[i]


# Traceback (most recent call last):
#   File "C:UsersxcentDesktopcode.py", line 5, in 
#     lst[i]
# IndexError: list index out of range

Сообщение об ошибке сообщает вам, что ошибка появляется в строке 5. Итак, давайте вставьте оператор печати до этой строки:

lst = ['Alice', 'Bob', 'Ann', 'Carl']

for i in range(len(lst)+1):
    print(i)
    lst[i]

Результатом этого кода-фрагмента по-прежнему ошибка. Но есть еще:

0
1
2
3
4
Traceback (most recent call last):
  File "C:UsersxcentDesktopcode.py", line 6, in 
    lst[i]
IndexError: list index out of range

Теперь вы можете увидеть все индексы, используемые для извлечения элемента. Последний – это индекс I = 4 Какие указывает на пятый элемент в списке (помните: Python начинает индексирование при индексе 0! ). Но в списке есть только четыре элемента, поэтому вам нужно уменьшить количество индексов, которые вы итерацииете. Правильный код, следовательно:

# CORRECT CODE
lst = ['Alice', 'Bob', 'Ann', 'Carl']

for i in range(len(lst)):
    lst[i]

Обратите внимание, что это минимальный пример, и это не имеет большого смысла. Но общая стратегия отладки остается даже для продвинутых проектов кода:

  • Выясните неисправный индекс непосредственно перед броском.
  • Устранить источник неисправного индекса.

IndexError при изменении списка по мере того, как вы повторяете его

IdmandError также часто происходит, если вы повторяете список, но вы удалите элементы, как вы итерации по списку:

l=[1,2,3,0,0,1]
for i in range(0, len(l)):
       if l[i]==0:
           l.pop(i)

Этот фрагмент кода от A Stackoverflow вопрос. Источник просто то, что list.pop () Метод Удаляет элемент со значением 0. Все последующие элементы теперь имеют меньший индекс. Но вы идете за все индексы до Лен (л) -1-1 и индекс 5 не существует в списке после удаления элементов в предыдущей итерации.

Вы можете просто исправить это с помощью оператора понимания короткого списка, который выполняет то же самое:

Только ненулевые элементы включены в список.

String indexError: Индекс списка вне диапазона

Ошибка может возникнуть при доступе к строкам:

Чтобы исправить ошибку для строк, убедитесь, что индекс падает между диапазоном 0 ... ЛЕН (S) -1 (Включено):

s = 'Python'
print(s[5])
# n

Tuple indexError: Индекс списка вне диапазона

На самом деле, indexError может возникнуть для всех упорядоченных коллекций, где вы можете использовать индексацию для получения определенных элементов. Таким образом, это также происходит при доступе к индексам кортежей, которые не существуют:

s = ('Alice', 'Bob')
print(s[2])

Опять же, начните считать с индексом 0, чтобы избавиться от этого:

s = ('Alice', 'Bob')
print(s[1])
# Bob

Примечание : Индекс последнего элемента в любой последовательности Лен (последовательность) -1 .

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Popping elements using the index value is an important method available with the different iterable objects. But, if we do not handle this pop() method properly, we might encounter the Indexerror: pop index out of range error. In this article, you will learn about dealing with the Indexerror: pop index out of range error and will also understand when it will occur.

The pop() method:

For eliminating an element from an array, developers can also use the pop() method of the array. If we simply use pop() without passing any parameter, then it will delete the element from the last index. But if we specify the index value of the array, it will remove that particular element from the array. The syntax for pop() looks something like this:

array_object.pop(optional_parameter)

What is Indexerror: pop index out of range error?

It is a type of error that occurs when programmers try to eliminate or remove an element that is not within the bounds of the object. Let suppose, your iterable object has 7 elements, and you wish to remove the 9th element from the object. Obviously, we can understand that this will not be possible because there isn’t any such element location existing. The overall size of that iterable object is 7 and trying to remove the 9th element seems wrong and silly. In that kind of situation, you will encounter Indexerror: pop index out of range error.

Example:

indexList = [2, 3, 4, 5, 6, 7, 8]
print(indexList)
print(" Popping The elements.... ")
indexList.pop(3)
indexList.pop(10)
print(" After popping the elements " , indexList)

Output:

[2, 3, 4, 5, 6, 7, 8]
 Popping The elements....
Traceback (most recent call last):
  File "testprogram.py", line 5, in <module>
    indexList.pop(10)
IndexError: pop index out of range

Indexerror: pop index out of range

Explanation:

We have to count the number of elements present in the iterable object. Then, we have to use the pop() and pass an argument that does not exceed the upper bound of that object element. Now, we are popping the third and the 10th element. Although, the third element will be popped up because it resides within the upper bound. But, there is no 10th element in that list. We don’t have the 10th element still we are trying to pop() it out of the list – which is not possible. This is the reason why we have enoundered the “Indexerror: pop index out of range” error.

Solution:

There are two ways to solve this problem. These are:

Method 1: Calculating the upper bound of the iterable object:

We have to count the number of elements present in the iterable object. Then, we have to use the pop() and pass an argument that does not exceed the upper bound of that object element. Once, we count the maximum element of that object, we can pop elements by passing the index value that is within that upper bound.

Program:

indexList = [2, 3, 4, 5, 6, 7, 8]
print(indexList)
print(" Popping The elements....")
indexList.pop(3)
indexList.pop(5)
print(" After popping the elements", indexList)

Output:

[2, 3, 4, 5, 6, 7, 8]
 Popping The elements....
 After popping the elements [2, 3, 4, 6, 7]

Explanation:

Here, we have taken a list by the name indexList and stored seven elements into it. Next, we print the complete list as it is. Now after popping the element having index 3 and element having index 5, we again display the list; but this time we have taken care of the upper bound and that is why it won’t show any error.

Method 2: Appending more elements to increase the upper bound of the object:

We can increase the number of elements of the iterable object if we want to pop() the nth element from the object. That way, the pop() will find itself within the range of the upper bound.

Program:

indexList = [2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16]
print(indexList)
print("Popping The elements....")
indexList.pop(3)
indexList.pop(10)
print("After popping the elements", indexList)

Output:

[2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16]
Popping The elements....
After popping the elements [2, 3, 4, 6, 7, 8, 9, 10, 12, 14, 16]

Explanation:

Here, we have taken a list by the name indexList and stored seven elements into it. Next, we print the complete list as it is. Now after popping the element having index 3 and element having index 5, we again display the list; but this time we have increased the overall length of the iterable object (here list) and appended more elements to it to avoid the Indexerror: pop index out of range error. Finally, we display the result. 

Conclusion:

Both solution techniques work fine, but the first one is preferred in most of the scenarios. It is essential for a programmer to understand the upper bound and lower bound of an element before popping any item from that iterable object.

What is the cause of the error IndexError: pop index out of range in Python? If you are looking for an answer to this problem, the following article is for you. I will show the cause of the error and some ways to solve it. Hope you will read the whole article.

What causes the IndexError: pop index out of range in Python error?

Syntax:

list.pop(index)

The list.pop() function is used to remove a specified element from the list, and the return result of the function is the removed element.

The error happens because you passed an index that doesn’t exist in the list.  

Example: 

languages = ['Python', 'C/C++', 'Java', 'JavaScript']

# Use the list.pop() method but have no control over the index in the list.
languages.pop(5)
print(languages)

Output:

Traceback (most recent call last):
 File "./prog.py", line 4, in <module>
IndexError: pop index out of range

List index control.

To solve this error, you must remember that only the first item in the list is 0. The last element has an index of list length – 1.

Example:

  • I created a list of 4 elements. I want to remove the first element, then the index of that element will be 0.
languages = ['Python', 'C/C++', 'Java', 'JavaScript']

# Use the list.the pop() method removed the element at index 0
print('Deleted element:', languages.pop(0))
print(languages)

Output:

Deleted element: Python
['C/C++', 'Java', 'Javascript']

If the list.pop() function parameter is not passed, and the last element of the list is removed.

Example:

languages = ['Python', 'C/C++', 'Java', 'JavaScript']

# If no argument is passed, the function will remove the last element of the list
print('Deleted element:', languages.pop())
print(languages)

Output:

Deleted element: JavaScript
['Python', 'C/C++', 'Java']

Use try/except.

Example:

languages = ['Python', 'C/C++', 'Java', 'JavaScript']

try:
	print('Deleted element:', languages.pop(5))
	print(languages)

except IndexError:
	print(f'The element does not exist in the list {languages}')

Output:

The element does not exist in the list ['Python', 'C/C++', 'Java', 'JavaScript']

Add elements to the list.

If the index you need to remove does not exist in the list, you can fix the error by adding elements to the list to be equal to or greater than the index you passed to the function, from which the error will be resolved.

Example:

  • I want to remove an element with an index of 5, but obviously, the last element has an index of 3.
  • I perform two more elements to appear with an index of 5. Perform normal delete.
languages = ['Python', 'C/C++', 'Java', 'JavaScript']

# Add an element to the end of the list using the list.append() function
languages.append('Nodejs')
languages.append('R')
print(f'The list after adding two elements: {languages}')

# Remove the 5th element
print('Deleted element:', languages.pop(5))

Output:

The list after adding two elements : ['Python', 'C/C++', 'Java', 'JavaScript', 'Nodejs', 'R']
Deleted element: R

Summary

Article on how to solve the error IndexError: pop index out of range in Python is over. The leading cause of that error is that you have no control over the index range in the list. Remember the first element in the list has an index of 0. If there are other ways or ideas about the article, please leave a comment.

Maybe you are interested:

  • IndexError: index 0 is out of bounds for axis 0 with size 0
  • IndexError: list index out of range in Python
  • IndexError: Replacement index 1 out of range for positional args tuple

Jason Wilson

My name is Jason Wilson, you can call me Jason. My major is information technology, and I am proficient in C++, Python, and Java. I hope my writings are useful to you while you study programming languages.


Name of the university: HHAU
Major: IT
Programming Languages: C++, Python, Java

Python является один из самых востребованных языков программирования на рынке. Этой популярностью язык не в последнюю очередь обязан своему богатому функционалу.

Мы расскажем вам о маленькой частичке этого обширного функционала, а именно — о том, как удалить элемент из списка. Списки – это коллекции, существенно упрощающие жизнь программистам, так что знать приемы работы с ними совершенно необходимо.

Итак, в этой статье мы рассмотрим следующие темы:

  • Зачем нужны списки?
  • Что такое списки?
  • Как удалить элементы из списка, используя:
    • remove()
    • pop()
    • del

Приступим 🙂

Зачем нужны списки?

Бывают ситуации, когда нужно обрабатывать разные типы данных одновременно.

Скажем, вам нужно, чтобы у вас был элемент строкового типа, целое число и число с плавающей точкой в одной коллекции. Дефолтные типы данных в других языках, таких как C и C++, такого не допускают. То есть, если вы определяете массив целочисленного типа, вы можете хранить в нем только целые числа. Если ваш массив имеет строковый тип, то и хранить в нем можно только строки.

Вот здесь у Python есть преимущество. Список позволяет хранить элементы разных типов данных как единую упорядоченную коллекцию!

Теперь, когда вы знаете, насколько важны списки, давайте рассмотрим, что они из себя представляют и как удалять из них элементы.

От редакции Pythonist. По теме типов данных в Python советуем почитать:

  • Изменяемые vs. неизменяемые типы данных в Python
  • Проверка типов данных и «утиная» типизация в Python
  • Преобразование типов данных в Python 3

Что такое списки?

Списки — это упорядоченные последовательности, которые могут содержать различные типы объектов. Другими словами, список – это упорядоченный и изменяемый набор элементов.

Списки также допускают дублирование членов.

Списки в Python можно сравнить с массивами на других языках программирования. Но есть одно важное отличие. Массивы содержат данные какого-нибудь одного типа, тогда как списки Python могут содержать элементы разных типов. В одном списке могут храниться строки, целые числа, числа с плавающей точкой и т.д.

Списки поддерживают индексацию и срезы, так же, как и строки. Кроме того, списки изменяемы (mutable). Это значит, что они могут быть изменены после создания. В дополнение к этому списки также могут быть вложенными, то есть вы можете включить список в список.

Основная причина, по которой списки являются важным инструментом в Python, заключается в большом разнообразии встроенных функций для работы с ними. Списки также очень полезны для реализации стеков и очередей в Python. Все элементы в списке заключаются в квадратные скобки и разделяются запятыми.

Пример:

myList = ["Bran",11,3.14,33,"Stark",22,33,11]
print(myList)

# OUTPUT: [‘Bran’, 11, 3.14, 33, ‘Stark’, 22, 33, 11]

В этом примере мы определили список под названием myList. Как видите, все элементы заключены в квадратные скобки ([]) и разделены запятыми. Этот список представляет собой упорядоченную последовательность, содержащую элементы разных типов данных.

Под индексом 0 у нас есть строковый элемент ‘Bran’. Под индексом 1 – целое число 11. Число с плавающей точкой 3.14 имеет индекс 2.

Таким образом, в одном списке мы можем хранить элементы разных типов.

Теперь, когда у вас есть четкое представление о том, как можно создавать списки, давайте перейдем к рассмотрению того, как удалять элементы из списков в Python.

Удаление элемента из списка

Удалить элементы из списка можно тремя способами:

  • используя метод remove()
  • при помощи метода pop() для объекта списка
  • при помощи оператора del

Давайте рассмотрим все три варианта подробнее.

Метод remove() в Python

Метод remove() – один из наиболее часто используемых методов списка для удаления элемента из него.

При использовании этого метода нужно указать конкретный элемент, который необходимо удалить.

Обратите внимание: если указанный элемент встречается несколько раз, то из списка будет удалено только его первое вхождение. Мы можем рассматривать этот метод как «удаление по bvtyb элемента». Если конкретный удаляемый элемент не найден, возникает ошибка ValueError.

Рассмотрим следующие примеры:

Пример 1:

myList = ["Bran",11,22,33,"Stark",22,33,11]
myList.remove(22)
myList

# OUTPUT: [‘Bran’, 11, 33, ‘Stark’, 22, 33, 11]

В этом примере мы определяем список под названием myList. Обратите внимание, что, как обсуждалось ранее, мы заключаем наши элементы списка в квадратные скобки. Далее мы используем метод remove() для удаления элемента 22 из myList.

При выводе в консоль списка с помощью print() мы видим, что из myList было удалено первое вхождение элемента 22.

Пример 2:

myList.remove(44)

# OUTPUT:
# Traceback (most recent call last):
#   File “<stdin>”, line 1, in 
# ValueError: list.remove(x): x not in list2

В примере 2 мы используем remove() для удаления элемента 44. Но мы знаем, что список myList не имеет целого числа 44. В результате интерпретатор Python выдает ошибку ValueError.

Однако стоит отметить, что remove() — медленный метод, поскольку он предполагает поиск элемента в списке.

Метод pop() в Python

Метод pop() – еще один широко используемый метод списка. Он удаляет элемент из списка и возвращает его.

Метод remove() и метод pop() работают по-разному. Применяя remove(), в качестве аргумента мы указываем сам элемент, который нужно удалить. А при использовании pop() мы указываем индекс нужного элемента. При этом элемент не только удаляется, но и возвращается. Если конкретный удаляемый элемент не найден, возникает IndexError.

Рассмотрим следующие примеры:

Пример 1:

myList = ["Bran", 11, 22, 33, "Stark", 22, 33, 11]
myList.pop(1)
# Output: 11

print(myList)
# OUTPUT: ['Bran', 22, 33, 'Stark', 22, 33, 11]

В этом примере мы опять определяем список под названием myList. Далее мы используем метод pop(), передавая 1 в качестве аргумента. Эта единичка представляет собой не что иное, как индекс удаляемого элемента (помним, что в Python нумерация начинается с 0).

Как видно из вывода, pop() удаляет элемент и выводит его в консоль. В данном случае элемент с индексом 1 является целым числом 11.

Когда мы выводим список myList после вызова pop(),мы видим, что в списке больше нет целого числа 11, которое ранее было на позиции 1.

Пример 2:

myList.pop(8)

# OUTPUT:
# Traceback (most recent call last):
#    File “<stdin>”, line 1, in 
# IndexError: pop index out of range

В примере 2 мы используем pop() для удаления элемента с индексом 8. Но поскольку на этой позиции нет элемента, интерпретатор Python выдает ошибку IndexError, как показано в выходных данных.

Здесь стоит сказать, что pop() — быстрый метод, поскольку он удаляет элемент по индексу и не производит поиск.

Оператор Python del

Этот оператор похож на метод pop() с одним важным отличием. Оператор del удаляет элемент из списка по индексу, но удаленный элемент не возвращается, как это происходит в методе pop(). По сути, этот оператор принимает индекс удаляемого элемента в качестве аргумента и удаляет элемент по этому индексу. Всё просто?.

Оператор del также поддерживает удаление ряда элементов из списка.

Обратите внимание: этот оператор, как и метод pop(), вызывает ошибку IndexError, когда указанный индекс выходит за пределы допустимого диапазона.

Рассмотрим примеры.

Пример 1:

myList = ["Bran", 11, 22, 33, "Stark", 22, 33, 11]
del myList[2]
myList

# OUTPUT: [‘Bran’, 11, 33, ‘Stark’, 22, 33, 11]

В этом примере мы в который раз определяем список под названием myList. И используем оператор del для удаления элемента с индексом 2. При удалении элемента он не возвращается (не выводится в консоль).

Распечатав myList, мы видим, что целое число 22, которое стояло под индексом 2, удалено.

Пример 2:

del myList[1:4]
myList

# OUTPUT:  [‘Bran’, 22, 33, 11]

В примере 2 мы используем оператор del для удаления диапазона элементов: от индекса 1 до индекса 4 (но не включая 4). Впоследствии, выведя в консоль myList, можно увидеть, что элементы, которые были на позициях 1, 2 и 3, удалены.

Пример 3:

del myList[7]

# OUTPUT:
# Traceback (most recent call last):
# File “”, line 1, in 
# IndexError: list assignment index out of range

В примере 3, когда мы используем оператор del для удаления элемента с индексом 7 (которого не существует), интерпретатор Python выдает ошибку ValueError.

Этот метод удаления элементов предпочтительнее, когда пользователь четко знает элементы в списке. Кроме того, это быстрый метод удаления элементов из списка.

Подведем итоги:

  • метод remove() удаляет первое совпадающее с аргументом значение
  • метод pop() удаляет элемент по указанному индексу и возвращает его
  • оператор del просто удаляет элемент по указанному индексу (или диапазону индексов).

Самые популярные вопросы, связанные с удалением элементов из списка

Как удалить определенный элемент из списка в Python?

Метод remove() удаляет первое вхождение элемента, переданного в метод в качестве аргумента. Метод pop() удаляет элемент по заданному индексу, а также возвращает удаленный элемент. Для удаления элемента или диапазона элементов из списка также можно использовать ключевое слово del.

Как удалить первый элемент из списка в Python?

Мы можем сделать это с помощью следующих четырех вариантов:

  • Самый простой подход – использовать метод списка pop([i]), который удаляет и возвращает элемент, присутствующий в указанной позиции в списке.
  • Это еще один подход, при котором метод remove(x) удаляет первый элемент из списка, который соответствует указанному значению.
  • Чтобы удалить первый элемент, мы можем использовать срезы, получив подсписок, содержащий все элементы списка, кроме первого.
  • Используя оператор del, мы можем удалить элемент из списка, используя его индекс. Отличие от метода pop() в том, что он не возвращает удаленный элемент.

Как удалить последний элемент списка в Python?

Метод pop() может использоваться для удаления и возврата последнего значения из списка или заданного значения индекса. Если индекс не указан, последний элемент выскакивает и удаляется автоматически.

Как удалить несколько элементов из списка в Python?

Для этой цели можно использовать ключевое слово del. С его помощью можно удалить несколько элементов из списка (указав диапазон индексов).

Надеемся, что это статья была вам полезна и вы получили четкое представление о различных методах удаления элементов из списка.

Больше 50 задач по Python c решением и дискуссией между подписчиками можно посмотреть тут

Перевод статьи «Python Remove List: How to remove element from Lists».

The Python pop() method removes an item at a specified index value from a list. This method returns the item you have removed so you know what modification has been made to your list. pop() accepts one argument: the index of the item you want to remove.


You may decide that you want to remove a specific item from a list. For example, say you are writing a program that stores a list of books available in a library. When a book is checked out, you may want to remove and return the book from your list of available books.

Get offers and scholarships from top coding schools illustration

Find Your Bootcamp Match

  • Career Karma matches you with top tech bootcamps
  • Access exclusive scholarships and prep courses

Select your interest

First name

Last name

Email

Phone number

By continuing you agree to our Terms of Service and Privacy Policy, and you consent to receive offers and opportunities from Career Karma by telephone, text message, and email.

The Python language includes a built-in function that can be used to remove an element from a list: pop(). The pop() method removes an element from a specified position in a list and returns the deleted item.

In this tutorial, we are going to discuss the Python pop() method, how it is used, and what arguments the function accepts. Then, we’ll explore a few examples to show how the method can be used with lists.

Python pop() Method

The Python pop() method removes an item from a list at a certain index position. pop() accepts one argument, which is the index position of the item you want to remove:

The pop() function takes in an index value, then checks whether the item exists in the list. If the item does exist, the method will remove the item from the list and return the item it has removed. If the item does not exist, an error will be returned.

Let’s use an example to showcase the pop() function and how it removes and returns the item at the index passed through the function.

Python List pop() Example

Say that we are building an application that manages the teas sold at our café. We have run low on Earl Grey tea, and we want to remove it from our tea list. Here’s a program we could use to remove Earl Grey from our list of teas while we are out of stock:

teas = ['Earl Gray', 'Oolong', 'English Breakfast', 'Chai', 'Chamomile']
remove_earl_gray = teas.pop(0)

print(remove_earl_gray)
print(teas)

Our program returns the following:

Earl Gray
['Oolong', 'English Breakfast', 'Chai', 'Chamomile']

On the first line of our code, we declare a Python variable. This variable is a Python array that contains five tea names. Then, we use the pop() method to remove the tea at the index position from our teas array. In this case, that tea is Earl Grey.

Finally, we print both the tea that we have removed and our new list of teas to the Python shell.

In addition, pop() can process negative index values. Say that you have received a delivery from your supplier of Earl Grey, but you are now low on Chamomile tea. You could use the following code to remove Chamomile from your list of teas:

teas = ['Earl Gray', 'Oolong', 'English Breakfast', 'Chai', 'Chamomile']
remove_chamomile = teas.pop(-1)

print(remove_chamomile)
print(teas)

Our code returns:

Chamomile
['Earl Gray', 'Oolong', 'English Breakfast', 'Chai']

We used the same code as we did in our first example. The only difference is that we have specified the index value -1, which refers to the last item in our list. So, our code removed Chamomile from our list of teas.

pop() Python: Removing a Non-Existent Value

An error will be returned if you try to remove an item that does not exist.

This is because pop() cannot find the item to which you are referring and so pop() cannot return any value. Here’s what happens when we try to remove a tea at the index position 6 from our list of teas, which does not exist:

teas = ['Earl Gray', 'Oolong', 'English Breakfast', 'Chai', 'Chamomile']
remove_tea = teas.pop(6)

print(remove_tea)

Our code returns:

IndexError: pop index out of range

pop() returns an “IndexError: pop index out of range” error if you specify an index value that does not exist in the array.

To handle this issue, you could use a Python try…except block. Specify your pop() method in a “try” block and if your code does not work then the contents of the “except” block will run:

try:
  names = ["Lewis"]
  names.pop(1);
except:
	print("This value does not exist.")

In this example, we use a try…except block to process our pop() statement. Our code returns:

This value does not exist.

This message is printed to the console because the code in our “try” block raised an error. In this case, we tried to remove the item at the index position 1 in the list “names”. But, the list only has one item, whose index position is 0.

The “IndexError: pop index out of range” error is similar to the “list index out of range” error. The list index out of range error occurswill see if you try to access an item that does not exist in a list. Read our guide on the Python list index out of range error for more information.

Conclusion

The Python pop() method allows you to remove an element from a specified position in a list. This method is useful if you have an existing array that contains a value you want to remove.

In this tutorial, we walked through how the pop() method can be used in Python to remove items from a list. We also explored how to handle the “IndexError: pop index out of range” error.

For guidance on top Python learning resources, books, and online courses, check out our How to Learn Python guide.

Ситуация: у нас есть проект, в котором мы математически моделируем игру в рулетку. Мы хотим обработать отдельно нечётные числа, которые есть на рулетке, — для этого нам нужно выбросить из списка все чётные. Проверка простая: если число делится на 2 без остатка — оно чётное и его можно удалить. Для этого пишем такой код:

# в рулетке — 36 чисел, не считая зеро
numbers = [n for n in range(36)]
# перебираем все числа по очереди
for i in range(len(numbers)):
    # если текущее число делится на 2 без остатка
    if numbers[i] % 2 == 0:
        # то убираем его из списка
        del numbers[i]

Но при запуске компьютер выдаёт ошибку:

❌ IndexError: list index out of range

Почему так произошло, ведь мы всё сделали правильно?

Что это значит: компьютер на старте цикла получает и запоминает одну длину списка с числами, а во время выполнения эта длина меняется. Компьютер, держа в памяти старую длину, пытается обратиться по номерам к тем элементам, которых уже нет в списке. 

Когда встречается: когда программа одновременно использует список как основу для цикла и тут же в цикле добавляет или удаляет элементы списка.

В нашем примере случилось вот что:

  1. Мы объявили список из чисел от 1 до 36.
  2. Организовали цикл, который зависит от длины списка и на первом шаге получает его размер.
  3. Внутри цикла проверяем на чётность, и если чётное — удаляем число из списка.
  4. Фактический размер списка меняется, а цикл держит в голове старый размер, который больше.
  5. Когда мы по старой длине списка обращаемся к очередному элементу, то выясняется, что список закончился и обращаться уже не к чему.
  6. Компьютер останавливается и выводит ошибку.

Что делать с ошибкой IndexError: list index out of range

Основное правило такое: не нужно в цикле изменять элементы списка, если список используется для организации этого же цикла. 

Если нужно обработать список, то результаты можно складывать в новую переменную, например так:

# в рулетке — 36 чисел, не считая зеро
numbers = [n for n in range(36)]
# новый список для нечётных чисел
new_numbers = []
# перебираем все числа по очереди
for i in range(len(numbers)):
    # если текущее число не делится на 2 без остатка
    if numbers[i] % 2 != 0:
        # то добавляем его в новый список
        new_numbers.append(numbers[i])

Вёрстка:

Кирилл Климентьев

Just move the line p = list1.index(p2) right before poping it, because the first pop call changes the list and the index of p2 become wrong in the case when l <= p. So the code should look like

while k != 24:
   p1 = random.choice(list1)
   p2 = random.choice(list1)
   r = (p1, p2)
   list2.append(r)
   l = list1.index(p1)
   list1.pop(l)
   p = list1.index(p2)
   list1.pop(p)
   k += 1

Понравилась статья? Поделить с друзьями:
  • Poo54 ошибка ситроен
  • Poo37 код ошибки
  • Poo36 ошибка форд
  • Poo36 ошибка ваз
  • Poo31 ошибка тойота