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 – mutuje | Nie, to cię nie dotyka |
| Co zwraca? | None | nowy 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