Wyjaśnienie lekcji
Po tej lekcji będziesz potrafić:
.append()..get().Pętle mogą konstruować kolekcję, a nie tylko wypisywać jej wartości. Zacznij od pustego celu, a potem dodawaj wartości podczas przetwarzania źródła. W przypadku listy użyj .append(), aby dodać każdy wybrany wynik z zachowaniem kolejności napotkania.
Filtrowanie wykorzystuje warunek w pętli: część elementów źródła jest dołączana, a inne pomijane. Pozostaw kolekcję wejściową bez zmian, gdy reprezentuje dane, które mogą być potrzebne później; edytowanie listy podczas iterowania po tej samej liście może nieoczekiwanie pomijać elementy.
Słownik przydaje się do zliczeń i grup. counts.get(key, 0) pobiera bieżący licznik lub zaczyna od zera. Przy grupowaniu zainicjalizuj listę, gdy kategoria pojawia się po raz pierwszy, a potem dołączaj jej elementy. Łączysz tu metody z wcześniejszych lekcji z funkcjami, warunkami i pętlami z Jednostki 1.
raw_regions = [" EU ", "Us", " APAC "]
regions = []
for region in raw_regions:
regions.append(region.strip().lower())
print(regions)Wynik:
['eu', 'us', 'apac']Każda oczyszczona wartość jest dołączana do nowej listy.
scores = [31, 0, 18, -3]
valid_scores = []
for score in scores:
if score >= 0:
valid_scores.append(score)
print(valid_scores)Wynik:
[31, 0, 18]Źródło pozostaje nietknięte; do wyniku trafiają tylko poprawne wartości.
states = ["open", "closed", "open"]
counts = {}
for state in states:
counts[state] = counts.get(state, 0) + 1
print(counts["open"])Wynik:
2Wartość zastępcza zaczyna licznik niewidzianego jeszcze klucza od zera.
requests = [("api", "urgent"), ("worker", "normal"), ("mail", "urgent")]
groups = {}
for service, category in requests:
if category not in groups:
groups[category] = []
groups[category].append(service)
print(groups["urgent"])Wynik:
['api', 'mail']Zgrupowany słownik łączy klucz z uporządkowaną listą pasujących wartości.
| Cel | Wzorzec |
|---|---|
| Rozpoczęcie listy wynikowej | results = [] |
| Dodanie następnej wybranej wartości | results.append(value) |
| Filtrowanie wartości | if condition: w pętli |
| Aktualizacja licznika | counts[key] = counts.get(key, 0) + 1 |
| Rozpoczęcie nowej kategorii | groups[key] = [] |
KeyError.