Pomocí list comprehension je v Pythonu možné vytvořit seznam z již existujícího seznamu na jednom řádku.
Například pokud bychom chtěli ze seznamu cisla
`vytvořit seznam druhých mocnin, mohli bychom psát:
cisla = [11, -12, 13, 14, -15]
mocniny = []
for p in cisla:
mocniny.append(p**2)
print(mocniny)
[121, 144, 169, 196, 225]
Pomocí list comprehension můžeme stejnou věc napsat na jeden řádek:
mocniny = [p**2 for p in cisla]
print(mocniny)
[121, 144, 169, 196, 225]
Vysvětlění:
[ ]
- říkají, že výsledkem bude seznam
for p in cisla
- projde se všechny prvky seznamucisla
p**2
- takto budou vypadat prvky nového seznamu
Následující list comprehension vytvoří seznam čísel větších než 0, z čísel, která původně byla v seznamu cisla
.
cisla = [11, -12, 13, 14, -15]
seznam1 = [prvek for prvek in cisla if prvek > 0]
print(seznam1)
[11, 13, 14]
Tato list comprehension odpovídá následujícímu kódu:
seznam1 = []
for prvek in cisla:
if prvek > 0:
seznam1.append(prvek)
print(seznam1)
[11, 13, 14]
Napište funkci, která...
dostane seznam čísel, vrátí seznam jejich desetinásobků
dostane seznam čísel, vrátí seznam sudých
dostane seznam čísel a vrátí ho zaokrouhlený, použijte funkci round()
dostane matici reprezentovanou jako seznam seznamů a vrátí z každého řádku největsí prvek (jejich seznam), použijte max()
dostane znakový řetězec, vrátí seznam slov, které jsou palindromy (čtou se stejně popředu jako pozpátku)
dostane dva seznamy, vrátí jejich průnik
spočítá skalární součin dvou vektorů