okpython.net
Все для начинающих

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

Чтобы удалить элемент из списка в Python, можно воспользоваться одним из методов списков:

  • li.remove(x) – удаляет из списка li первый попавшийся элемент, имеющий значение x. Если элемента с указанным значением в списке не окажется, будет вызвано исключение ValueError (см. пример №1).
  • li.pop([i]) – удаляет из списка li элемент с указанным индексом i, а затем возвращает его. Если индекс не указан (параметр необязательный), удаляется последний элемент списка, т.к. по умолчанию i принимается равным -1.
  • li.clear() – удаляет все элементы из списка.
Код Результат pythonCodes
# Создаем список для манипуляций.	
li = ['a', 'b', 'c', 'd']
# Выведем для наглядности
print('Стартовый список:', li, end='\n\n')
    
# Удаляем 'b' (изменяем сам список).
li.remove('b')
# Получим ['a', 'c', 'd']
print('li.remove("b") ->', li, end='\n\n')	

# Удаляем элемент списка с индексом 0.
elem = li.pop(0)
# Выведет a.
print('li.pop(0) ->', elem)		
# Выведет ['c', 'd']
print('Теперь li ->', li, end='\n\n')		

# Удаляем последний элемент списка.
elem = li.pop()
# Выведет d.
print('li.pop() ->', elem)		
# Выведет ['c']
print('Теперь li ->', li, end='\n\n')

# Очищаем список.
li.clear()		
# Выведет []
print('li.clear() ->', li)	
Стартовый список: ['a', 'b', 'c', 'd']

li.remove("b") -> ['a', 'c', 'd']

li.pop(0) -> a
Теперь li -> ['c', 'd']

li.pop() -> d
Теперь li -> ['c']

li.clear() -> []


	
	
	

	
	
	
	






			

Пример №1. Методы для удаления элементов списка в Пайтон.

Также для удаления элементов списка могут быть использованы срезы и универсальный оператор del (см. пример №2).

Код Результат pythonCodes
# Создаем список для манипуляций.	
li = ['a', 'b', 'c', 'd', 'e']
# Выведем для наглядности.
print('Стартовый список:', li, end='\n\n')

# Удаляем 'b' (изменяем сам список).
del li[1]
# Получим ['a', 'c', 'd', 'e'].
print('del li[1] ->', li, end='\n\n')	

# Удаляем срез из двух элементов.
del li[-2:]
# Получим ['a', 'c'].
print('del li[-2:] ->', li, end='\n\n')

# Восстанавливаем список.	
li = ['a', 'b', 'c', 'd', 'e']		
# Выводим для наглядности.
print('Стартовый список:', li, end='\n\n')	

# Удаляем 'b' через срез.
li[1:2] = []
# Получим ['a', 'c', 'd', 'e'].
print('li[1:2] = [] ->', li, end='\n\n')		

# Удаляем срез из двух элементов.
li[-2:] = []
# Получим ['a', 'c'].
print('li[-2:] = [] ->', li, end='\n\n')

# Очищаем список.
li = []		
# Выведет [].
print('li = [] ->', li)	
Стартовый список: ['a', 'b', 'c', 'd', 'e']

del li[1] -> ['a', 'c', 'd', 'e']

del li[-2:] -> ['a', 'c']

Стартовый список: ['a', 'b', 'c', 'd', 'e']

li[1:2] = [] -> ['a', 'c', 'd', 'e']

li[-2:] = [] -> ['a', 'c']

li = [] -> []




















 

Пример №2. Удаление элементов списка при помощи срезов и оператора del.

Если требуется удалить не один, а несколько элементов, соответствующих некоторому условию, можно воспользоваться циклом, генератором или соответствующей встроенной функцией для обхода элементов списка с выборочным удалением необходимых из них (см. пример №3).

Код Результат pythonCodes
''' 1-й вариант '''
# Создаем список для манипуляций.	
li = ['a', 'bc', 'def', 'g']
# Выведем для наглядности.
print('Стартовый список:', li)

# Стартовое значение индекса.
i = 0
# Длина списка.
ln = len(li)
# Запускаем цикл по индексам списка.
while i < ln:
    # Если в строке более одного символа.
    if len(li[i]) > 1: 
        # Удаляем элемент.
        del li[i]    
        # Не забываем уменьшить длину списка,
        # иначе индекс может выйти за его пределы.
        ln -= 1      
    else:
        # Если элемент удален не был,
        # наращиваем индекс.
        i += 1          

# Получим ['a', 'g'].
print('Конечный результат: ', li, end='\n\n')	

''' 2-й вариант '''
# Восстанавливаем список.
li = ['a', 'bc', 'def', 'g']        
# Выведем для наглядности.
print('Стартовый список:', li)        

# Можно и через генератор списков.
li = [x for x in li if len(x) < 2]
# Получим ['a', 'g'].
print('Конечный результат: ', li, end='\n\n')       

''' 3-й вариант '''
# Восстанавливаем список.
li = ['a', 'bc', 'def', 'g']        
# Выведем для наглядности.
print('Стартовый список:', li)    

# Используем фильтрацию эл-тов.
li = list(filter(lambda x: len(x) < 2, li))
# Получим ['a', 'g'].
print('Конечный результат: ', li)   
Стартовый список: ['a', 'bc', 'def', 'g']
Конечный результат:  ['a', 'g']

Стартовый список: ['a', 'bc', 'def', 'g']
Конечный результат:  ['a', 'g']

Стартовый список: ['a', 'bc', 'def', 'g']
Конечный результат:  ['a', 'g']







































 

Пример №3. Удаление элементов списка по условию.

Подробнее о списках в Питоне можно почитать в параграфе «Списки в Python» нашего учебника, а порешать задачи – в соответствующем разделе сборника задач.