Rozumienia języka Python: wyrażenia typu list, dyktowanie i ustawianie

Pisz czyściej i szybciej w Pythonie. Lista główna, słownik i zestawienia wyrażeń z praktycznymi przykładami, warunkami filtrowania i zagnieżdżonymi pętlami.

Spróbuj w Edytorze

Przegląd

Rozumienie to jedna z najbardziej lubianych funkcji Pythona, oferująca zwięzłą i bardzo czytelną składnię do tworzenia nowych kolekcji (list, słowników i zestawów) na podstawie istniejących obiektów iteracyjnych. Zamiast pisać wielowierszowe pętle „for” i ręcznie dodawać elementy, wyrażenia pozwalają na wykonanie tej samej transformacji, filtrowania i przypisania w jednym, wyrazistym wierszu kodu.

Najpopularniejszym wariantem są wyrażenia listowe o strukturze „[wyrażenie elementu w warunku iterowalnym, jeśli]”. Pod maską Python optymalizuje zrozumienie, aby działało z szybkością bliską C, często przewyższając równoważne ręczne pętle „for”, ponieważ pętla jest obsługiwana przez podstawowy interpreter. Idealnie nadają się do szybkich przekształceń, takich jak konwertowanie listy temperatur w stopniach Celsjusza na stopnie Fahrenheita lub wyodrębnianie określonych kluczy z listy rekordów użytkownika.

Poza listami Python obsługuje wyrażenia słownikowe i zbiorowe. Rozumienie słownikowe, zdefiniowane za pomocą nawiasów klamrowych i par klucz-wartość (np. `{klucz: wartość dla x w iterowalności}`), jest bardzo przydatne do odwracania par mapowań lub analizowania metadanych. Zestawienia wyrażeń generują unikalne kolekcje poprzez automatyczne usuwanie duplikatów. Chociaż wyjaśnienia są niezwykle potężne, programiści powinni unikać ich nadmiernego komplikowania; jeśli zrozumienie wymaga zagnieżdżonych pętli lub złożonych warunków, tradycyjna pętla „for” jest zwykle łatwiejsza do odczytania i utrzymania.

Dane wyjściowe kodu i wykonania

Demonstruje przekształcenia list, filtrowanie warunkowe i tworzenie słownika na podstawie danych wejściowych mapowania.

comprehensions.py
Spróbuj w Edytorze
numbers = [1, 2, 3, 4, 5, 6]

# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]

# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}

# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}

print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")
Wyjście terminala
Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}

Wdrażanie krok po kroku

  • Odfiltrowywanie pustych wartości lub nieprawidłowych danych z logów
  • Mapowanie ładunków API na mapowania danych klucz-wartość
  • Szybkie formatowanie wierszy bazy danych w proste listy

Często zadawane pytania

Czy zrozumienie jest szybsze niż normalne pętle?

Tak, w większości przypadków są szybsze, ponieważ iteracja jest obsługiwana przez zoptymalizowany kod C w interpreterze Pythona.

Czy zawsze powinienem używać wyrażeń?

Nie. Czytelność kodu jest priorytetem Pythona. Jeśli zrozumienie ma logikę zagnieżdżoną lub jest dłuższe niż jedna lub dwie linie, preferowana jest tradycyjna pętla.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.