За да премахнете елемент от списък (масив) от тип list в Python, използвайте методите за списъци clear(), pop() и remove(). Можете също така да зададете позицията и обхвата на списъка чрез използване на index или slice и след това да го изтриете с помощта на оператора del.
Тук се предоставя следната информация.
- Премахване на всички елементи:
clear()
- Изтриване на елемент в зададената позиция и получаване на неговата стойност.:
pop()
- Търси елементи със зададената стойност и премахва първия елемент.:
remove()
- Изтриване чрез задаване на позиция и обхват в индексното парче:
del
- Пакетно изтриване на няколко елемента, които отговарят на критериите.:индикация за включване в списъка
Имайте предвид, че списъците могат да съхраняват данни от различни типове и се различават строго от масивите. Използвайте array (стандартна библиотека) или NumPy, когато искате да работите с масиви за процеси, които изискват размер на паметта или адрес на паметта, или за числени изчисления на големи по обем данни.
- Премахване на всички елементи: clear()
- Изтриване на елемент в зададената позиция и получаване на неговата стойност.: pop()
- Търси елементи със зададената стойност и премахва първия елемент.: remove()
- Изтриване чрез задаване на позиция и обхват в индексното парче: del
- Пакетно изтриване на няколко елемента, които отговарят на критериите.: индикация за включване в списъка
Премахване на всички елементи: clear()
В метода clear() на списъка всички елементи се премахват, в резултат на което се получава празен списък.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Изтриване на елемент в зададената позиция и получаване на неговата стойност.: pop()
Методът pop() на списък може да се използва за изтриване на елемент на определена позиция и за получаване на стойността на този елемент.
Първото (начално) число е 0.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(0))
# 0
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(3))
# 4
print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]
Може да се използва и отрицателна стойност, за да се посочи позицията от края (последната). Краят (последният) е -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Ако аргументът е пропуснат и не е посочена позиция, елементът в края (последният) се изтрива.
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Посочването на несъществуваща позиция ще доведе до грешка.
# print(l.pop(100))
# IndexError: pop index out of range
Забележете, че pop(0), която премахва първия елемент, изисква следните разходи и не е ефективна операция. Вижте следната страница в официалната уикипедия за изчислителната сложност на различни операции върху списъци.O(n)
O(1)
Типът deque е предоставен в модула за колекции на стандартната библиотека като тип, който изтрива елементи отгоре на тази цена. Например, ако искате да третирате данните като опашка (FIFO), по-ефективно е да използвате deque.
Търси елементи със зададената стойност и премахва първия елемент.: remove()
Методът remove() на списъка може да се използва за търсене на елементи със същата стойност като посочената и за премахване на първия елемент.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Ако списъкът съдържа повече от един елемент, който отговаря на зададената стойност, ще бъде премахнат само първият от тях.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Ако е зададена несъществуваща стойност, се появява грешка.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Изтриване чрез задаване на позиция и обхват в индексното парче: del
Можете също така да използвате командата del, за да премахнете елементи от списъка.
Посочете елемента, който ще бъде изтрит, чрез неговия индекс. Първият (начален) индекс е 0, а последният (краен) индекс е -1.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]
del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]
Ако зададете диапазон с филийки, можете да изтриете няколко елемента наведнъж.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]
l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]
l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]
l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]
Възможно е също така да посочите целия диапазон и да изтриете всички елементи.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Ако зададете диапазона в разреза по този начин и посочите стъпката на нарастване, можете да изтриете няколко скачащи елемента наведнъж.
l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]
l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]
За повече информация относно нарязването на филийки вижте следната статия.
Пакетно изтриване на няколко елемента, които отговарят на критериите.: индикация за включване в списъка
Процесът на премахване на елементи, които отговарят на условията, е еквивалентен на процеса на оставяне (извличане) на елементи, които не отговарят на условията. За този вид обработка се използва нотацията за разбиране на списък.
- Свързани статии:Използване на нотация за разбиране на списъци в Python
Пример за премахване на нечетни или четни елементи (= оставяне на четни или нечетни елементи) е показан по-долу.%
Това е операторът за остатък.i % 2
Това е остатъкът от i, разделен на 2.
В нотацията за разбиране на списък се създава нов списък. За разлика от въведените досега методи за тип списък, първоначалният списък остава непроменен.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]
print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Други примери. В зависимост от условния израз е възможна разнообразна обработка.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']
print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']
Ако искате да премахнете дублиращи се елементи, използвайте типа set set.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']