Wyrażenia listowe

Zwięzły sposób tworzenia list, zbiorów i słowników z innych kolekcji.

Na tej stronie

Przykład

#
Python
scores = [45, 82, 67, 91, 30]

passed = [s for s in scores if s >= 60]
curved = [min(s + 10, 100) for s in scores]

print(passed)
print(curved)
Wynikzapisany wynik, możesz go sprawdzić
[82, 67, 91]
[55, 92, 77, 100, 40]

Definicja i zastosowanie

#

Wyrażenie listowe (list comprehension) buduje nową listę w jednej linii: [x * 2 for x in numbers]. Łączy pętlę i przekształcenie, a opcjonalny warunek if na końcu filtruje elementy.

Ta sama składnia działa dla zbiorów ({…}), słowników ({k: v for …}) i generatorów ((…)). Generator nie tworzy od razu całej listy, tylko dostarcza elementy na żądanie, co oszczędza pamięć.

Wyrażenia listowe są czytelne, dopóki są krótkie. Zagnieżdżone pętle i kilka warunków w jednym wyrażeniu lepiej rozpisać na zwykłą pętlę for.

Składnia

#
Składnia
[wyrazenie for element in kolekcja if warunek]

Więcej przykładów

#
Słowniki, zbiory i generatory
Python
names = ["Ania", "Kuba", "Ola", "Ania"]

lengths = {name: len(name) for name in names}
unique = {name.lower() for name in names}
total = sum(len(name) for name in names)

print(lengths)
print(sorted(unique))
print(total)
Wynikzapisany wynik, możesz go sprawdzić
{'Ania': 4, 'Kuba': 4, 'Ola': 3}
['ania', 'kuba', 'ola']
15

Dobre praktyki

#
  • Do sum i sprawdzeń (sum, any, all) przekazuj wyrażenie generatorowe bez nawiasów kwadratowych. Nie tworzy zbędnej listy.
  • Jeśli wyrażenie nie mieści się w jednej czytelnej linii, rozpisz je na pętlę.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.