Aby usunąć element z listy (tablicy) typu list w Pythonie, należy użyć metod listowych clear(), pop() i remove(). Możesz również określić pozycję i zakres listy za pomocą index lub slice, a następnie usunąć ją za pomocą instrukcji del.
Podane są tu następujące informacje.
- Usuń wszystkie elementy:
clear()
- Usuwa element na podanej pozycji i pobiera jego wartość.:
pop()
- Wyszukuje elementy z podaną wartością i usuwa pierwszy element.:
remove()
- Usuwanie przez określenie pozycji i zakresu w wycinku indeksu:
del
- Wyczerpujące usuwanie wielu elementów, które spełniają kryteria.:wykaz wskazań włączenia
Zauważ, że listy mogą przechowywać dane różnych typów i są ściśle różne od tablic. Użyj array (biblioteka standardowa) lub NumPy, gdy chcesz obsługiwać tablice dla procesów, które wymagają rozmiaru pamięci lub adresu pamięci, lub dla obliczeń numerycznych danych o dużej skali.
- Usuń wszystkie elementy: clear()
- Usuwa element na podanej pozycji i pobiera jego wartość.: pop()
- Wyszukuje elementy z podaną wartością i usuwa pierwszy element.: remove()
- Usuwanie przez określenie pozycji i zakresu w wycinku indeksu: del
- Wyczerpujące usuwanie wielu elementów, które spełniają kryteria.: wykaz wskazań włączenia
Usuń wszystkie elementy: clear()
W metodzie listowej clear(), wszystkie elementy są usuwane, w wyniku czego otrzymujemy pustą listę.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Usuwa element na podanej pozycji i pobiera jego wartość.: pop()
Metoda pop() listy może być użyta do usunięcia elementu na określonej pozycji i uzyskania wartości tego elementu.
Pierwszą (początkową) liczbą jest 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]
Do określenia pozycji od końca (ostatniej) można również użyć wartości ujemnej. Koniec (last) wynosi -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Jeśli argument jest pominięty i nie podano pozycji, to usuwany jest element znajdujący się na końcu (ostatni).
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Podanie nieistniejącej pozycji spowoduje wystąpienie błędu.
# print(l.pop(100))
# IndexError: pop index out of range
Zauważ, że pop(0), który usuwa pierwszy element, wymaga następującego kosztu i nie jest wydajną operacją. Zobacz następującą stronę na oficjalnym wiki, aby dowiedzieć się o złożoności obliczeniowej różnych operacji na listach.O(n)
O(1)
Typ deque jest dostarczany w module kolekcji biblioteki standardowej jako typ, który usuwa elementy na wierzch po tym koszcie. Na przykład, jeśli chcesz traktować dane jako kolejkę (FIFO), bardziej efektywne jest użycie deque.
Wyszukuje elementy z podaną wartością i usuwa pierwszy element.: remove()
Metoda listowa remove() może być użyta do wyszukania elementów o takiej samej wartości jak podana i usunięcia pierwszego elementu.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Jeśli lista zawiera więcej niż jeden element pasujący do podanej wartości, tylko pierwszy z nich zostanie usunięty.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Jeżeli zostanie podana nieistniejąca wartość, to wystąpi błąd.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Usuwanie przez określenie pozycji i zakresu w wycinku indeksu: del
Możesz również użyć instrukcji del, aby usunąć elementy z listy.
Określa element, który ma zostać usunięty poprzez jego indeks. Pierwszym (początkowym) indeksem jest 0, a ostatnim (końcowym) indeksem jest -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]
Jeśli określisz zakres za pomocą plasterków, możesz usunąć wiele elementów jednocześnie.
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]
Możliwe jest również określenie całego zakresu i usunięcie wszystkich elementów.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Jeśli określisz zakres w wycinku w ten sposób i określisz krok przyrostowy, możesz usunąć wiele elementów przeskakujących jednocześnie.
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]
Aby uzyskać więcej informacji na temat krojenia, zobacz poniższy artykuł.
Wyczerpujące usuwanie wielu elementów, które spełniają kryteria.: wykaz wskazań włączenia
Proces usuwania elementów spełniających warunki jest równoważny procesowi pozostawiania (wyodrębniania) elementów niespełniających warunków. Do tego rodzaju przetwarzania stosuje się notację list comprehension.
- Powiązane artykuły:Używanie notacji listy Pythona
Przykład usuwania elementów nieparzystych lub parzystych (= pozostawiania elementów parzystych lub nieparzystych) jest pokazany poniżej.%
Jest to operator reszt.i % 2
Jest to reszta z liczby i podzielona przez 2.
W notacji list comprehension, tworzona jest nowa lista. W przeciwieństwie do metod typu listowego wprowadzonych do tej pory, oryginalna lista pozostaje niezmieniona.
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]
Inne przykłady. W zależności od wyrażenia warunkowego możliwe jest różnorodne przetwarzanie.
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']
Jeśli chcesz usunąć zduplikowane elementy, użyj typu set.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']