Python oferuje wiele sposobów usuwania elementów z list: metody remove(), pop() oraz operator del. Każde podejście ma swoje niuanse. Właściwy wybór zależy od tego, czy chcemy usunąć element według wartości, indeksu, uzyskać usuniętą wartość, czy po prostu usunąć element.
Zamieszanie między remove(), pop() i del często prowadzi do błędów: niewłaściwy wybór metody może spowodować wyjątek lub usunięcie nie tego elementu. Ważne jest również, aby wiedzieć, co się dzieje z wartością zwracaną i jak różne metody reagują na brak elementu na liście.
remove(x) usuwa pierwszy napotkany element o wartości x — wyrzuca wyjątek ValueError, jeśli taki nie istniejepop([i]) usuwa i zwraca element według indeksu i (bez indeksu – ostatni element). Jeśli indeks jest poza zakresem – wyrzuca IndexErrordel list[i] usuwa element według indeksu bez zwracania wartości. Można usuwać fragmenty (del list[i:j])Przykład kodu:
lst = [10, 20, 30, 20] lst.remove(20) # [10, 30, 20] lst.pop(1) # Usuwa 30, [10, 20] del lst[0] # [20]
Kluczowe cechy:
Co się stanie, jeśli wywołasz remove() dla wartości, której nie ma na liście?
Wyrzucany jest ValueError:
lst = [1, 2] lst.remove(5) # ValueError: list.remove(x): x not in list
Jak zwrócić element, który właśnie został usunięty z listy?
Tylko pop zwraca usunięty element.
lst = [7, 8, 9] x = lst.pop() # x = 9
Czy można używać del do usuwania według wartości?
Nie, del działa tylko z indeksem lub fragmentem. Według wartości można tylko przez remove.
**Negatywny przypadek Programista pisze pętlę przez range(len(lst)) i usuwa elementy przez del — indeksacja się psuje, elementy są pomijane. Zalety: Proste i "logiczne" dla nowicjusza Wady: Łatwo uzyskać nieoczekiwane zachowanie — niektóre elementy nie są usuwane, lista działa nie tak, jak oczekiwano. Pozytywny przypadek Przed usunięciem według wartości — jest kontrola, pop jest używane tylko wtedy, gdy indeks jest gwarantowany, usunięcie według indeksu odbywa się w odwrotnej kolejności. Zalety: Kod jest odporny na błędy, brak pominięć elementów Wady: Czasami kod jest nieco dłuższy, ale jest za to przejrzysty i bezpieczny