Python — lista ze zrozumieniem
Lista ze zrozumieniem
Zrozumienie listy oferuje krótszą składnię, gdy chcesz utworzyć nową listę na podstawie wartości istniejącej listy.
Przykład:
Na podstawie listy owoców chcesz otrzymać nową listę zawierającą tylko owoce z literą „a” w nazwie.
Bez zrozumienia listy będziesz musiał napisać for
oświadczenie z testem warunkowym w środku:
Przykład
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Dzięki zrozumieniu listy możesz to wszystko zrobić za pomocą tylko jednej linii kodu:
Przykład
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
Składnia
newlist = [expression for item in iterable if condition == True]
Zwracaną wartością jest nowa lista, a stara lista pozostaje niezmieniona.
Stan: schorzenie
Warunek jest jak filtr, który akceptuje tylko te elementy, które mają
wartośćTrue
.
Przykład
Akceptuj tylko przedmioty, które nie są „jabłkiem”:
newlist = [x for x in fruits if x != "apple"]
Warunek
if x != "apple"
zwróci True
wszystkie elementy inne niż „jabłko”, dzięki czemu nowa lista będzie zawierała wszystkie owoce z wyjątkiem „jabłka”.
Warunek jest opcjonalny i można go pominąć:
Przykład
Bez if
oświadczenia:
newlist = [x for x in fruits]
Iterowalny
Obiekt iterowalny może być dowolnym obiektem iterowalnym, takim jak lista, krotka, zestaw itp.
Przykład
Możesz użyć tej range()
funkcji, aby utworzyć iterację:
newlist = [x for x in range(10)]
Ten sam przykład, ale z warunkiem:
Przykład
Akceptuj tylko liczby mniejsze niż 5:
newlist = [x for x in range(10) if x < 5]
Wyrażenie
Wyrażenie jest bieżącym elementem w iteracji , ale jest również wynikiem, którym można manipulować, zanim skończy się jako element listy na nowej liście:
Przykład
Ustaw wartości na nowej liście na wielkie litery:
newlist = [x.upper()
for x in fruits]
Możesz ustawić wynik na dowolny:
Przykład
Ustaw wszystkie wartości na nowej liście na „cześć”:
newlist = ['hello' for x in fruits]
Wyrażenie może również zawierać warunki , nie jak filtr, ale jako sposób manipulowania wynikiem:
Przykład
Zwróć „pomarańczowy” zamiast „bananowy”:
newlist = [x if x != "banana" else "orange"
for x in fruits]
Wyrażenie w powyższym przykładzie mówi:
„Zwróć przedmiot, jeśli nie jest to banan, jeśli jest to banan, zwróć pomarańczowy”.