append() vs extend()
append() dodaje na koniec listy jeden element, nawet jeśli jest to cała lista, a extend() dopisuje po kolei wszystkie elementy przekazanej kolekcji.
Porównanie w tabeli
#Co dodaje
- list.append()
- Dokładnie jeden element
- list.extend()
- Wszystkie elementy kolekcji, jeden po drugim
Lista przekazana jako argument
- list.append()
- Trafia na koniec jako jeden zagnieżdżony element
- list.extend()
- Zostaje rozpakowana: każdy element osobno
Zmiana długości listy
- list.extend()
- +liczba elementów kolekcji
Napis jako argument
- list.append()
- Dodaje cały napis jako jeden element
- list.extend()
- Dodaje osobno każdy znak napisu
Odpowiednik operatora
- list.append()
- Brak
Typowe użycie
- list.append()
- Dodanie jednej wartości, np. wyniku obliczenia
- list.extend()
- Połączenie dwóch list w jedną
Przykład
#frontend = ["HTML"]
frontend.append("CSS")
frontend.extend(["JavaScript", "React"])
print(frontend)Definicja i zastosowanie
#Obie metody modyfikują listę w miejscu i dodają nowe elementy na jej końcu. Obie zwracają None, więc nie przypisuj ich wyniku z powrotem do zmiennej.
Różnią się tym, co uznają za jeden element. append(x) dodaje dokładnie to, co podasz, jako jedną nową pozycję, więc przekazana lista trafia na koniec jako zagnieżdżony element. extend(kolekcja) rozpakowuje przekazaną kolekcję i dopisuje każdy jej element osobno. Operator += na liście działa tak jak extend().
Gdy dodajesz jedną wartość, nawet jeśli sama jest listą czy krotką, użyj append(). Gdy chcesz dopisać zawartość innej kolekcji element po elemencie, użyj extend() albo +=. Pomylenie ich to częsty błąd: append() tam, gdzie miał być extend(), tworzy listę z zagnieżdżoną listą w środku.
Składnia
#lista.append(element)
lista.extend(iterable)Więcej przykładów
#versions = ["1.0"]
versions.append(["1.1", "1.2"])
print(versions)
other = ["1.0"]
other.extend(["1.1", "1.2"])
print(other)letters = ["a"]
letters.extend("bc")
print(letters)
letters.append("bc")
print(letters)Dobre praktyki
#- Nie pisz
lista = lista.append(x)anilista = lista.extend(y). Obie metody zwracająNone. - Do dodania jednego napisu jako całości użyj
append(), nieextend(). - Jeśli nie chcesz zmieniać oryginału, połącz listy operatorem
+:nowa = a + b.
Powiązane hasła
#Widzisz błąd albo brakuje przykładu? Napisz do nas.