Wyjaśnienie lekcji
Po tej lekcji będziesz potrafić:
append() lub kilka elementów za pomocą extend().remove().pop(), używając domyślnego lub podanego indeksu.Listy są modyfikowalne, więc możesz zmieniać ich długość bez odbudowywania. Najważniejsza różnica to jeden element czy kilka elementów: append(value) dodaje jeden obiekt, natomiast extend(iterable) dodaje każdą wartość z obiektu iterowalnego.
Użyj insert(index, value), gdy nowy element ma trafić przed istniejącą pozycję. Różni się to od items[index] = value, które zastępuje element w tym miejscu.
Przy usuwaniu remove(value) szuka pasującej wartości i usuwa jej pierwsze wystąpienie; gdy wartości nie ma, zgłasza ValueError. pop() usuwa ostatni element i zwraca go; pop(index) usuwa i zwraca konkretną pozycję, a gdy pozycja jest nieprawidłowa, zgłasza IndexError. Obie operacje modyfikują oryginalną listę.
Możesz używać tych operacji w pętlach i warunkach, aby utrzymywać kolejkę, listę kontrolną lub zbiór nazw zadań. Unikaj łączenia metody modyfikującej z instrukcją return: metody takie jak append(), extend(), insert() i remove() zwracają None.
append() dodaje pojedynczy element. extend() pobiera elementy z innego obiektu iterowalnego jeden po drugim.
services = ["api"]
services.append("worker")
services.extend(["database", "cache"])
print(services)Wynik:
['api', 'worker', 'database', 'cache']Dołączenie całej drugiej listy zamiast tego utworzyłoby zagnieżdżony element listy.
insert(index, value) przesuwa istniejące elementy w prawo.
stages = ["build", "deploy"]
stages.insert(1, "test")
print(stages)Wynik:
['build', 'test', 'deploy']Dawny drugi element nadal istnieje.
Gdy wartość występuje dwa razy, remove() usuwa tylko pierwszą kopię.
flags = ["ready", "retry", "ready"]
flags.remove("ready")
print(flags)Wynik:
['retry', 'ready']Wartość, która nie występuje, spowodowałaby ValueError.
Bez indeksu pop() usuwa ostatni element; z indeksem usuwa wskazaną pozycję.
workers = ["api", "queue", "mailer"]
last_worker = workers.pop()
first_worker = workers.pop(0)
print(last_worker)
print(first_worker)
print(workers)Wynik:
mailer
api
['queue']Oba wywołania zmieniają oryginalną listę, a jednocześnie zwracają usuniętą wartość.
| Potrzeba | Metoda |
|---|---|
| Dodanie jednego elementu na końcu | items.append(value) |
| Dodanie każdego elementu z innego obiektu iterowalnego | items.extend(values) |
| Wstawienie przed indeksem | items.insert(index, value) |
| Usunięcie pierwszej równej wartości | items.remove(value) |
| Usunięcie ostatniego elementu i zwrócenie go | items.pop() |
| Usunięcie indeksu i zwrócenie elementu | items.pop(index) |
items[index] = value zastępuje, zamiast przesuwać elementy.pop(): pop() oczekuje indeksu, a nie wyszukiwanej wartości.remove() usunie wszystkie duplikaty: usuwa tylko pierwszą pasującą wartość.