Python – porozumění seznamu
Porozumění seznamu
Porozumění seznamu nabízí kratší syntaxi, když chcete vytvořit nový seznam na základě hodnot existujícího seznamu.
Příklad:
Na základě seznamu ovoce chcete nový seznam obsahující pouze ovoce s písmenem "a" v názvu.
Bez porozumění seznamu budete muset napsat for
prohlášení s podmíněným testem uvnitř:
Příklad
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
S porozuměním seznamu to vše můžete udělat pouze s jedním řádkem kódu:
Příklad
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
Syntaxe
newlist = [expression for item in iterable if condition == True]
Návratová hodnota je nový seznam, přičemž starý seznam zůstane nezměněn.
Stav
Podmínka je jako filtr, který přijímá pouze položky, které mají
hodnotuTrue
.
Příklad
Přijímejte pouze položky, které nejsou „jablko“:
newlist = [x for x in fruits if x != "apple"]
Kondice
if x != "apple"
se vrátí True
pro všechny prvky jiné než "jablko", takže nový seznam bude obsahovat všechny druhy ovoce kromě "jablka".
Podmínka je volitelná a lze ji vynechat:
Příklad
Bez if
prohlášení:
newlist = [x for x in fruits]
Iterovatelné
Iterovatelný může být jakýkoli iterovatelný objekt, jako je seznam, n-tice, sada atd.
Příklad
Funkci můžete použít range()
k vytvoření iterovatelného:
newlist = [x for x in range(10)]
Stejný příklad, ale s podmínkou:
Příklad
Přijměte pouze čísla nižší než 5:
newlist = [x for x in range(10) if x < 5]
Výraz
Výraz je aktuální položkou v iteraci , ale je to také výsledek, se kterým můžete manipulovat, než skončí jako položka seznamu v novém seznamu:
Příklad
Nastavte hodnoty v novém seznamu na velká písmena:
newlist = [x.upper()
for x in fruits]
Výsledek můžete nastavit podle libosti:
Příklad
Nastavte všechny hodnoty v novém seznamu na „ahoj“:
newlist = ['hello' for x in fruits]
Výraz může také obsahovat podmínky, ne jako filtr, ale jako způsob manipulace s výsledkem:
Příklad
Vraťte „oranžový“ místo „banán“:
newlist = [x if x != "banana" else "orange"
for x in fruits]
Výraz ve výše uvedeném příkladu říká:
"Vraťte položku, pokud to není banán, pokud je to banán, vraťte pomeranč."