Warning: Undefined array key "pl" in /home/host1693024/python-3.com/htdocs/www/875348534534.php on line 2036
Jak usunąć elementy z list w Pythonie

Jak usunąć elementy z list w Pythonie


Usuwanie elementów z listy Python jest powszechnym zadaniem, które można wykonać za pomocą różnych technik. Niezależnie od tego, czy musisz usunąć element po jego pozycji, czy o wartości, Python ma cię objęty. W tym samouczku zbadasz różne podejścia do usuwania elementów z listy, w tym za pomocą .pop() , instrukcji del i .Remove() .

Metoda .REMOVE() umożliwia usunięcie pierwszego występowania określonej wartości, podczas gdy .POP() może usunąć element przez jego indeks i zwrócić go. Instrukcja del oferuje inny sposób usunięcia elementów według indeksu, a także można je użyć do usuwania plasterków listy. Wybrane podejście będzie zależeć od twoich konkretnych potrzeb.

Pod koniec tego samouczka zrozumiesz, że:

  • Aby usunąć element z listy w Python, możesz użyć różnych podejść, takich jak .pop() , del , .Remove() i .clear() .
  • Aby usunąć elementy z określonej pozycji na liście, użyjesz metody .pop() .
  • Aby usunąć elementy i wycinki z listy w Pythonie, użyj instrukcji del.
  • Używasz metody .Remove() do usuwania pierwszego występowania określonej wartości z listy.
  • Aby usunąć wszystkie pozycje z listy, użyj funkcji .clear().
  • Możesz także usunąć zduplikowane elementy za pomocą pętli, słownika lub zestawu.

Aby w pełni wykorzystać ten samouczek, powinieneś znać podstawowe tematy dotyczące list języka Python, takie jak tworzenie list, dodawanie elementów do listy i uzyskiwanie dostępu do elementów na liście.

Jak usunąć określone elementy z listy

Jedną z powszechnych operacji, którą wykonasz na liście Python , jest usunięcie określonych elementów listy. Może być konieczne usunięcie elementów na podstawie ich pozycji na liście lub ich wartości.

Aby zilustrować, w jaki sposób możesz wykonać to zadanie, załóżmy, że tworzysz stronę internetową biblioteki publicznej. Twoja aplikacja internetowa pozwoli użytkownikom zapisać listę książek, które chcieliby przeczytać. Powinno to również pozwolić na edytowanie i usuwanie książek z listy, a także sortować listę.

Możesz użyć listy Python do przechowywania listy czytania użytkownika jako zbioru tytułów książek. Na przykład lista czytania może wyglądać mniej więcej tak:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]

Teraz, gdy masz już listę książek, możesz usunąć z listy pojedynczą, konkretną książkę na kilka sposobów. Jednym z podejść jest użycie metody .pop().

Usuwanie elementów za pomocą metody .pop()

Czasami może być konieczne usunięcie elementów z określonej pozycji na liście. Na przykład w aplikacji biblioteki publicznej użytkownicy mogą wybierać książki do usunięcia, zaznaczając pola wyboru w interfejsie użytkownika. Twoja aplikacja usunie każdy wybrany element na podstawie jego indeksu, czyli pozycji elementu na liście.

Jeśli znasz indeks elementu, który chcesz usunąć, możesz użyć metody .pop(). Ta metoda przyjmuje indeks elementu jako opcjonalny argument, a następnie usuwa i zwraca element o tym indeksie. Jeśli do wywołania metody nie przekażesz argumentu indeksu, wówczas funkcja .pop() usunie i zwróci ostatnią pozycję na liście.

Należy pamiętać, że listy Python używają indeksowania opartego na zero do pozycjonowania, co oznacza, że pierwszy element na liście znajduje się w indeksie 0, drugi element jest w indeksie 1 i tak dalej. Mając to na uwadze, oto przykład, w jaki sposób możesz użyć .pop() , aby usunąć i wyświetlić pierwszy element w swoim Książki Lista:

>>> books.pop(0)
'Dragonsbane'

Wywołujesz metodę .pop() na liście books z indeksem 0, wskazującym pierwszy element na liście. To wywołanie usuwa pierwszy tytuł, Dragonsbane, z listy, a następnie go zwraca.

Jeśli po uruchomieniu tego kodu sprawdzisz zawartość swojej listy, zauważysz, że DragonsBane już nie ma:

>>> books
['The Hobbit', 'Wonder', 'Jaws']

Tutaj ponownie wyświetlasz listę książek po wywołaniu .pop(). Możesz zobaczyć, że Twoja lista jest teraz o jeden element krótsza, ponieważ .pop() usunął pierwszy tytuł.

Jak dowiedziałeś się wcześniej w samouczku, .pop() usuwa element, a także zwraca jego wartość, którą można następnie użyć do innych operacji. Załóżmy na przykład, że aplikacja biblioteczna pozwala również użytkownikom przechowywać osobną listę książek, które przeczytały. Po przeczytaniu książki może usunąć ją z początkowej listy książek i przenieść tytuł na listę odczytu:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> read_books = []

>>> read = books.pop(0)
>>> read_books.append(read)

>>> read_books
['Dragonsbane']
>>> books
['The Hobbit', 'Wonder', 'Jaws']

W drugim wierszu w przykładzie tworzysz nową, pustą listę o nazwie read_books , aby przechowywać nazwy książek, które przeczytał użytkownik. Następnie używasz metody .pop() , aby usunąć pierwszy tytuł z oryginalnej listy książek i przechowywać ją w zmiennej. Następnie używasz .Append() , aby dodać zapisany tytuł do listy Read_books .

Kiedy sprawdzisz zawartość obu list, zobaczysz, że lista przeczytanych zawiera teraz pierwszy usunięty tytuł, a oryginalna lista książek nie zawiera już tego tytułu.

Jeśli wywołasz metodę .pop() na pustej liście, metoda zgłosi wyjątek IndexError:

>>> books.pop()
'Jaws'
>>> books.pop()
'Wonder'
>>> books.pop()
'The Hobbit'

>>> books.pop()
Traceback (most recent call last):
  ...
IndexError: pop from empty list

W tym przykładzie wielokrotnie wywołujesz funkcję .pop() na swojej liście, usuwając każdy tytuł z listy. Twoje ostatnie wywołanie .pop() skutkuje wyjątkiem IndexError, ponieważ wywołujesz metodę z pustej listy.

Metoda .pop() podniesie również indexerror , jeśli nazwiesz ją z argumentem indeksu, który jest większy niż rozmiar listy minus jeden:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.pop(50)
Traceback (most recent call last):
  ...
IndexError: pop index out of range

W tym fragmencie kodu wywołujesz funkcję .pop() na oryginalnej liście książek, która zawiera tylko cztery elementy. Użyłeś metody .pop() dla elementu o indeksie 50, ale jest ona poza zakresem, ponieważ lista nie jest zbyt duża, więc zgłasza IndexError.

Użycie indeksu ujemnego jako argumentu funkcji .pop() umożliwia usuwanie elementów listy od prawej do lewej, zamiast zaczynać od początku listy. Na przykład indeks -1 umożliwia dostęp do ostatniego elementu na liście, indeks -2 umożliwia dostęp do przedostatniego elementu i tak dalej. Zgodnie z tym wzorcem books[-len(books)] jest indeksem ujemnym, który zwraca pierwszy element.

Poniższy przykład pokazuje, jak użyć indeksu ujemnego z funkcją .pop() w celu usunięcia ostatniej pozycji z listy:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.pop(-1)
'Jaws'

>>> books
['Dragonsbane', 'The Hobbit', 'Wonder']

Wywołujesz .pop() na liście, używając -1 jako argumentu. Indeks ten usuwa z listy ostatni tytuł, Szczęki. Kiedy ponownie sprawdzisz zawartość listy, zobaczysz, że ostatnia pozycja została usunięta. Aby uzyskać ten sam efekt, można również wywołać funkcję books.pop() bez argumentu.

Usuwanie elementów za pomocą instrukcji del

Możesz także usunąć elementy z określonego indeksu za pomocą instrukcji del. Podobnie jak metoda .pop(), del usuwa element z podanej pozycji, ale nie zwraca wartości.

Aby to zilustrować, załóżmy, że użytkownik Twojej aplikacji biblioteki publicznej przypadkowo dwukrotnie dodał kilka książek do listy. Poniższy przykład pokazuje, jak prawidłowo użyć del do usunięcia zduplikowanych tytułów książek:

>>> >>> books = [
...     "Dragonsbane",
...     "The Hobbit",
...     "Wonder",
...     "Wonder",
...     "Jaws",
...     "Jaws",
... ]

>>> del books[2]
>>> books
['Dragonsbane', 'The Hobbit', 'Wonder', 'Jaws', 'Jaws']

W podświetlonym wierszu najpierw napisz słowo kluczowe del , a następnie nazwa zmiennej listy, a następnie żądany indeks w nawiasach kwadratowych.

Podobnie jak w przypadku metody .POP() , możesz również użyć negatywnych wartości indeksu z instrukcją del , aby usunąć elementy z końca listy:

>>> del books[-1]

Usuwasz ostatnią pozycję na liście za pomocą instrukcji del, ale nie zwraca ona wartości. Jeśli z jakiegoś powodu musisz zapisać usuniętą wartość, użyj zamiast tego metody .pop().

Podobnie jak w przypadku metody .pop(), przy próbie użycia del na liście z nieprawidłowym indeksem pojawi się wyjątek IndexError :

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> del books[100]
Traceback (most recent call last):
  ...
IndexError: list assignment index out of range

Lista książek zawiera tylko cztery pozycje, ale próbujesz wykonać del na liście, używając indeksu 100. Ten indeks jest poza zakresem, ponieważ na pozycji 100 nie ma elementu.

W przeciwieństwie do .POP() , musisz podać wartość indeksu z instrukcją del . Jeśli tego nie zrobisz, program podniesie SkładniaSerorror :

>>> del books[]
  File "<input>", line 1
    del books[]
              ^
SyntaxError: invalid syntax

Wykonujesz instrukcję del bez indeksu, co skutkuje wyjątkiem SyntaxError, ponieważ operator indeksowania wymaga indeksu docelowego. Ta instrukcja nie usuwa ostatniej pozycji na liście, tak jak robi to wywołanie .pop() bez argumentu.

Usuwanie elementów według wartości za pomocą metody .REMOVE()

Załóżmy, że aplikacja listy książek udostępnia pole tekstowe, w którym użytkownicy mogą wprowadzić tytuł do usunięcia z listy.

Jeśli chcesz usunąć element z listy według jego wartości, a nie według jego indeksu, możesz użyć metody .REMOVE() . Wymaga jednej wartości jako argumentu i usuwa pierwszy element na liście pasującej do tej wartości:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.remove("The Hobbit")
>>> books
['Dragonsbane', 'Wonder', 'Jaws']

W drugiej linii tego przykładu wywołujesz .remove(), aby usunąć Hobbit z listy książek. Po wyświetleniu zaktualizowanej listy zobaczysz, że Hobbit został pomyślnie usunięty.

Jeśli wywołasz .Remove() z wartością, której nie ma na liście, metoda podniesie wyjątek Valueerror , jak pokazano w następującym kodzie:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.remove("The Two Towers")
Traceback (most recent call last):
  ...
ValueError: list.remove(x): x not in list

Ponadto, w przeciwieństwie do .pop(), nie można wywołać funkcji .remove() bez przekazania wartości:

>>> books.remove()
Traceback (most recent call last):
  ...
TypeError: list.remove() takes exactly one argument (0 given)

Tutaj wywołujesz funkcję .remove() bez przekazywania jej argumentu. W rezultacie otrzymasz komunikat TypeError wyjaśniający, że metoda wymaga argumentu.

Usuń część listy

Twój użytkownik może potrzebować usunąć kilka elementów z listy jednocześnie. Powiedz, że aplikacja biblioteki publicznej wyświetla określoną liczbę elementów na stronę, podobną do usługi e -mail lub witryny zakupowej, i pozwala użytkownikowi wybrać i usunąć wszystkie elementy na tej stronie jednocześnie.

Jeśli lista pokazuje 25 pozycji na stronę, użytkownik byłoby szybciej usunięcie wszystkich 25 elementów razem jako fragment, zamiast kliknąć i usuwać każdy z nich indywidualnie.

Tego typu usunięcie można wykonać za pomocą instrukcji del, której używałeś wcześniej do usuwania elementów z określonego indeksu. Instrukcja del umożliwia także jednoczesne usuwanie fragmentów listy, więc zamiast podawać pojedynczy argument indeksujący, przekazujesz włączającą pozycję początkową i wyłączną pozycję końcową, oddzielone dwukropkiem.

Instrukcja del następnie usuwa wszystkie elementy na liście, które znajdują się w tym zakresie indeksu. Załóżmy na przykład, że chcesz usunąć pierwsze trzy książki z listy:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> del books[0:3]
>>> books
['Jaws']

W drugim wierszu wywołujesz wywołanie instrukcji del , które usuwa plasterek listy. Następnie wyświetlasz zaktualizowaną listę, która pokazuje, że pierwsze trzy elementy zostały usunięte. Pamiętaj, że wartości indeksu zaczynają się od indeksu 0 i idą w górę, ale nie uwzględniają indeksu 3 . Tak więc w kodzie usunąłeś pierwsze trzy tytuły z listy.

Możesz także użyć negatywnych wartości indeksu z del , aby usunąć zakres elementów listy, jak pokazano w poniższym przykładzie:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws", "It"]
>>> del books[-3:-1]
>>> books
['Dragonsbane', 'The Hobbit', 'It']

W tym przykładzie w drugiej linii usuwasz książki począwszy od indeksu -3 (wpis Wonder) aż do pozycji o indeksie -1 (It). Pamiętaj, że w przypadku indeksów ujemnych elementy liczysz wstecz od końca listy. Na przykład instrukcja del Books[-3:-1] jest w tym przypadku równoważna instrukcji del Books[2:4].

Usuń wszystkie elementy z listy

Załóżmy, że Twój użytkownik chce całkowicie wyczyścić listę książek. Możesz usunąć wszystkie elementy z listy za pomocą metody .clear() . Oto jak to działa:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws", "It"]
>>> books.clear()
>>> books
[]

W pierwszej linii wywołujesz metodę .clear(), która nie przyjmuje żadnych argumentów i usuwa wszystkie pozycje z listy. Następnie sprawdzasz książki w powłoce Pythona po operacji .clear(), która potwierdza, że lista jest teraz pusta.

Usuń duplikaty za pomocą pętli

Załóżmy, że pracujesz nad aplikacją, która umożliwia zduplikowane wpisy na liście. Na przykład aplikacja kontaktowa może umożliwić wiele kontaktów z tym samym numerem telefonu, ale różnymi nazwami. W takim przypadku możesz napotkać listę z duplikatem numerów telefonów.

Aby usunąć duplikaty z listy, możesz użyć kombinacji pętli i metod listy. Takie podejście polega na iterowaniu listy i usuwaniu każdej instancji wartości, gdy istnieje więcej niż jedno wystąpienie tej wartości.

Wcześniej widziałeś, jak metoda .remove() usuwa tylko pierwsze wystąpienie elementu, który pasuje do argumentu wartości. Teraz zobaczysz, jak możesz go używać w pętli.

Dla uproszczenia wyobraź sobie, że Twoja aplikacja książki kontaktowej jest używana w kraju, w którym obowiązują krótkie numery telefonów zawierające początkowy dwucyfrowy kod kraju. Załóżmy również, że kolejność liczb na liście jest ważna. Twoja lista kontaktów może wyglądać mniej więcej tak:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

Najpierw musisz określić, ile razy liczba pojawia się na liście. Python udostępnia metodę .count(), która zwraca liczbę wystąpień określonej wartości na liście.

Na przykład możesz użyć .Count() , aby określić, ile razy liczba 54123 pojawia się na liście kontaktów:

>>> phone_numbers.count("54123")
3

Wywołanie funkcji .count() zwraca wartość 3, informując, ile wystąpień numeru telefonu znajduje się na liście. Następnie czas utworzyć pętlę usuwającą duplikaty. Możesz utworzyć pętlę, która sprawdza, czy istnieje więcej niż jedno wystąpienie danej liczby, a następnie usuwa każdy duplikat, aż pozostanie tylko jedna liczba.

Używając metody .count() i pętli, możesz iterować po liście kontaktów i dla każdego numeru, o ile liczba jest większa niż jeden, usuń jedno z wystąpień:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

>>> for phone_number in phone_numbers[:]:
...     while phone_numbers.count(phone_number) > 1:
...         phone_numbers.remove(phone_number)
...

>>> phone_numbers
['54456', '54789', '54123']

W tym przykładzie widać listę numerów telefonów z duplikatami. W drugim wierszu konfigurujesz pętlę dla , która będzie patrzeć na każdy numer, jeden na raz. Chociaż liczba liczby jest większa niż jedna, wywołujesz .Remove() na liście z numerem jako argument. Po zakończeniu pętli będziesz mieć listę bez żadnych duplikatów. Zauważ, że zamówienie na końcowej liście opiera się na ostatnim zdaniu każdego elementu.

Aby uzyskać bardziej zwięzły sposób usuwania duplikatów, możesz także skorzystać ze słownika. Słownik to typ danych języka Python reprezentujący asocjacyjną kolekcję unikalnych kluczy odwzorowanych na wartości. Ponieważ słowniki nie mogą zawierać duplikatów kluczy, możesz użyć metody .fromkeys(), aby usunąć kopie z listy:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

>>> phone_numbers = list(dict.fromkeys(phone_numbers))

>>> phone_numbers
['54123', '54456', '54789']

Używasz metody .fromkeys(), aby przekonwertować listę na słownik bez duplikatów kluczy. Następnie konwertujesz słownik z powrotem na listę, z której usunięto duplikaty. Słowniki zachowują kolejność wstawiania, dzięki czemu masz pewność, że elementy na deduplikowanej liście są ułożone tak samo, jak w oryginale. W przypadku tej metody ostateczna kolejność odpowiada kolejności pierwszego wystąpienia każdego elementu.

Użyj zestawu, aby usunąć duplikaty

We wcześniejszym przykładzie książki kontaktowej ma znaczenie kolejność liczb na liście. Jeśli jednak chcesz usunąć zduplikowane elementy na liście i nie dbaj o kolejność elementów, rozważ użycie zestawu zamiast listy. zestaw to wbudowany typ kolekcji w Pythonie, który nie pozwala na zduplikowane elementy.

Poniższy przykład pokazuje, w jaki sposób możesz przekonwertować listę na zestaw unikalnych numerów telefonów:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

>>> set(phone_numbers)
{'54123', '54789', '54456'}

W podświetlonej linii używasz set(), aby przekonwertować listę na zestaw, usuwając wszystkie zduplikowane wpisy. Pamiętaj, że zestawy to kolekcje nieuporządkowane, więc nie gwarantują, że elementy listy zostaną ułożone w oryginalnej kolejności. Z powodu tego zachowania zestaw może nie być właściwym typem danych do użycia, jeśli projekt wymaga, aby elementy pozostały uporządkowane.

Zestawy można jednak sortować na liście, która często jest ważnym wymogiem dla list kontaktów i innych takich aplikacji. Obsługują również wydajne testy członkowskie, umożliwiając szybkie sprawdzenie, czy wartość istnieje w kolekcji.

Wniosek

Nauczyłeś się różnych technik usuwania elementów z listy Pythona, zarówno według pozycji, jak i wartości. Eksplorowałeś metody takie jak .pop(), .remove() i .clear(). Dowiedziałeś się także o instrukcji del. Każde z tych narzędzi oferuje unikalne podejście do manipulacji listami. Dodatkowo zagłębiłeś się w usuwanie duplikatów przy użyciu innych podejść, takich jak pętle, słowniki i zestawy.

Poznanie manipulacji listami jest niezbędne dla programisty Pythona, ponieważ listy są podstawowym typem danych w Pythonie.

W tym samouczku nauczyłeś się:

  • Usuń element z listy według indeks Używając .pop() i del
  • Użyj metody .remove(), aby usunąć pierwsze wystąpienie określonej wartości
  • Usuń kawałki lub części z listy za pomocą instrukcji del
  • Wyczyść Wszystkie elementy z listy za pomocą metody .clear()
  • Usuń duplikat elementy z pętlą , słownik lub set

Umiejętności te pozwolą ci skutecznie manipulować listami w projektach Python, dzięki czemu kod jest bardziej solidny i dostosowywany do różnych potrzeb obsługi danych.