Wyrażenia listowe
Zwięzły sposób tworzenia list, zbiorów i słowników z innych kolekcji.
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
#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
#- forPętla przechodząca po kolejnych elementach sekwencji lub innego obiektu iterowalnego.
- Wyrażenia słownikoweZwięzły sposób budowania nowego słownika przez przekształcenie lub filtrowanie innej kolekcji.
- map()Wywołuje funkcję dla każdego elementu i zwraca iterator wyników.
- filter()Zwraca iterator elementów, dla których funkcja zwraca prawdę.
Widzisz błąd albo brakuje przykładu? Napisz do nas.