Rozdział 11 · Mnóstwo informacji!

Potężne operacje listy!

Listy są modyfikowalne – mają cały zestaw metod dodawania, usuwania, wyszukiwania i sortowania.

Listy (w przeciwieństwie do łańcuch znaków) mają metody, które zmienić sam lista — listy, w przeciwieństwie do łańcuch znaków, są modyfikowalne (§11.4).

Kopiowanie i dodawanie

kopirovanie.py
original = [1, 2, 3]
kopiya = original.copy()
kopiya.append(4)
print(original)  # [1, 2, 3] — nie zmieniło się
print(kopiya)    # [1, 2, 3, 4]
kopiya = original — to nie jest kopia!
kopiya = original tworzy drugą zmienną, która określa to samo lista — zmiana przez jedną zmienną jest również widoczna przez inną. Nazywa się to aliasing zostanie szczegółowo omówione w §11.9. Aby uzyskać prawdziwą, niezależną kopię, musisz .copy() (lub wycinek original[:]) — szczegóły i ważny niuans z listami zagnieżdżonymi w §11.10.

Liczenie i sprzątanie

podschet.py
chisla = [1, 2, 2, 3, 2]
print(chisla.count(2))   #3 – Ile razy pojawia się 2
chisla.clear()
print(chisla)             # [] - lista pusty

Konkatenacja

konkatenaciya_spiskov.py
a = [1, 2]
b = [3, 4]
print(a + b)   # [1, 2, 3, 4]

Wyszukiwanie i kontrola dostępności: in, index(), count()

poisk.py
fruits = [„jabłko”, „banan”, „wiśnia”]
print(„banan” in fruits)         # True
print(fruits.index(„wiśnia”))      # 2 — indeks elementu

Weryfikacja in jest tym samym wyrażeniem logicznym co w rozdziale 9, tylko że Teraz po lewej stronie nie jest liczba, lecz zbiór:

membership_primer.py
allowed_users = ["anna", "oleg", "maria"]
username = "oleg"
if username in allowed_users:
    print(„Dostęp dozwolony”)
index() powoduje ValueError, jeśli nie ma wartości
Bezpieczny porządek – najpierw sprawdź in, a potem poszukaj indeksu: if value in items: position = items.index(value).

Dodawanie i usuwanie przedmiotów

Krótko – szczegółowa analiza z diagramami wizualnymi w §11.5 i §11.6:

dobavlenie_udalenie.py
fruits = [„jabłko”, „banan”]
fruits.append(„wiśnia”)        # dodaj do końca
fruits.insert(0, „mango”)     # wklej według indeksu
print(fruits)

fruits.remove(„banan”)        # usuń według wartości
last = fruits.pop()            # usuń i cofnij ostatni element
print(fruits, last)

sort() mutuje i wraca None to klasyczna pułapka

razvorot_sortirovka.py
chisla = [3, 1, 4, 1, 5]
chisla.sort()
print(chisla)      # [1, 1, 3, 4, 5]
chisla.reverse()
print(chisla)      # [5, 4, 3, 1, 1]
sort_none_lovushka.py
chisla = [3, 1, 2]
chisla = chisla.sort()
print(chisla)   # None — a nie posortowany lista!
Nigdy nie pisz x = x.sort()
.sort() sortuje lista na miejscu i powroty None — to popularny sposób Python pokazać „zmieniłem obiekt, a nie utworzyłem nowy” (ta sama zasada, co w przypadku .append()). Przypisanie wyniku z powrotem do zmiennej usuwa lista, zastępując go słowem None.

sorted() to samo zadanie, ale bez mutacji

list.sort()sorted(list)
Czy zmienia to oryginalny lista?Tak – mutujeNie, to cię nie dotyka
Co zwraca?Nonenowy posortowany lista
sorted_primer.py
chisla = [3, 1, 4, 1, 5]
novyj = sorted(chisla)
print(chisla)   # [3, 1, 4, 1, 5] - Bez zmian
print(novyj)     # [1, 1, 3, 4, 5]

sorted() mogą i key — przez który Własność porównywania elementów:

sorted_key.py
names = ["Bob", "Alexandra", "Li"]
print(sorted(names, key=len))   # ['Li', 'Bob', 'Alexandra']
Praktyka: operacje na listach
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →