List Comprehension je jednou z nejúžasnějších funkcí Krajta . Je to chytrý a stručný způsob vytváření seznamů iterací přes iterovatelný objekt. Vnořená vysvětlení seznamu nejsou nic jiného než porozumění seznamu v rámci jiného pochopení seznamu, které je docela podobné vnořeným cyklům for.
Porozumění vnořeného seznamu v syntaxi Pythonu
Níže je syntaxe vnořeného porozumění seznamu :
Syntax: new_list = [[výraz pro položku v seznamu] pro položku v seznamu]
Parametry:
- Výraz : Výraz, který se používá k úpravě každé položky v příkazu
- Položka: Prvek v iterovatelném
- Seznam: Iterovatelný objekt
Příklady pochopení vnořeného seznamu v Pythonu
Níže jsou uvedeny některé příklady pochopení vnořeného seznamu:
Příklad 1: Vytvoření Matrixu
V tomto příkladu porovnáme, jak můžeme vytvořit matrici když ji tvoříme s
Bez porozumění seznamu
V tomto příkladu je matice 5×5 vytvořena pomocí struktury vnořené smyčky. Vnější smyčka se pětkrát iteruje a připojí k ní prázdné podseznamymatrix>
, zatímco vnitřní smyčka naplní každý dílčí seznam hodnotami v rozsahu od 0 do 4, což vede k matici s po sobě jdoucími celočíselnými hodnotami.
Python3
matrix> => []> for> i> in> range> (> 5> ):> > # Append an empty sublist inside the list> > matrix.append([])> > for> j> in> range> (> 5> ):> > matrix[i].append(j)> print> (matrix)> |
>
>Výstup
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>
Používání funkce List Comprehension
Stejného výstupu lze dosáhnout pomocí pochopení vnořeného seznamu na jediném řádku. V tomto příkladu je matice 5×5 generována pomocí pochopení vnořeného seznamu. Vnější porozumění se opakuje pětkrát a představuje řádky, zatímco vnitřní porozumění naplní každý řádek hodnotami v rozsahu od 0 do 4, což vede k matici s po sobě jdoucími celočíselnými hodnotami.
příklady nfa
Python3
# Nested list comprehension> matrix> => [[j> for> j> in> range> (> 5> )]> for> i> in> range> (> 5> )]> print> (matrix)> |
>
>Výstup
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>
Příklad 2: Filtrování vnořeného seznamu pomocí funkce List Comprehension
Zde uvidíme, jak můžeme filtrovat seznam s a bez použití porozumění seznamu.
Bez použití porozumění seznamu
V tomto příkladu vnořená smyčka prochází 2D maticí, extrahuje lichá čísla ze seznamu Python v seznamu a připojuje je k seznamu.odd_numbers>
. Výsledný seznam obsahuje všechny liché prvky z matice.
Python3
zeenat aman herec
matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ,> 6> ], [> 7> ,> 8> ,> 9> ]]> odd_numbers> => []> for> row> in> matrix:> > for> element> in> row:> > if> element> %> 2> !> => 0> :> > odd_numbers.append(element)> print> (odd_numbers)> |
>
>Výstup
[1, 3, 5, 7, 9]>
Používání funkce List Comprehension
V tomto příkladu je pro stručné vygenerování seznamu použito porozumění seznamuodd_numbers>
iterací přes prvky 2D matice. Ve výsledném seznamu jsou zahrnuty pouze liché prvky, což poskytuje stručnou a čitelnou alternativu k ekvivalentní struktuře vnořené smyčky.
Python3
matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ,> 6> ], [> 7> ,> 8> ,> 9> ]]> odd_numbers> => [> > element> for> row> in> matrix> for> element> in> row> if> element> %> 2> !> => 0> ]> print> (odd_numbers)> |
>
>Výstup
[1, 3, 5, 7, 9]>
Příklad 3: Zploštění vnořených dílčích seznamů
Bez porozumění seznamu
V tomto příkladu 2D seznam s názvemmatrix>
s různou délkou podseznamu je zploštěn pomocí vnořených smyček. Prvky z každého dílčího seznamu jsou postupně připojeny k seznamuflatten_matrix>
výsledkem je zploštělá reprezentace původní matice.
Python3
# 2-D List> matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ], [> 6> ,> 7> ,> 8> ,> 9> ]]> flatten_matrix> => []> for> sublist> in> matrix:> > for> val> in> sublist:> > flatten_matrix.append(val)> print> (flatten_matrix)> |
>
znak na řetězec java
>Výstup
[1, 2, 3, 4, 5, 6, 7, 8, 9]>
S porozuměním seznamu
Opět to lze provést pomocí pochopení vnořeného seznamu, jak je ukázáno níže. V tomto příkladu 2D seznam s názvemmatrix>
s různou délkou podseznamu je zploštěn pomocí porozumění vnořenému seznamu. Výraz[val for sublist in matrix for val in sublist]>
stručně vygeneruje sloučený seznam postupným zahrnutím každého prvku z dílčích seznamů.
Python3
# 2-D List> matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ], [> 6> ,> 7> ,> 8> ,> 9> ]]> # Nested List Comprehension to flatten a given 2-D matrix> flatten_matrix> => [val> for> sublist> in> matrix> for> val> in> sublist]> print> (flatten_matrix)> |
>
>Výstup
[1, 2, 3, 4, 5, 6, 7, 8, 9]>
Příklad 4: Manipulace s řetězcem pomocí funkce List Comprehension
Bez porozumění seznamu
V tomto příkladu 2D seznam s názvemmatrix>
obsahující řetězce je upraven pomocí vnořených smyčky . Vnitřní smyčka používá velké první písmeno každého ovoce a vnější smyčka vytváří nový 2D seznam,modified_matrix>
, s plody velkými, výsledkem je matice řetězců s počátečními velkými písmeny.
Python3
matrix> => [[> 'apple'> ,> 'banana'> ,> 'cherry'> ],> > [> 'date'> ,> 'fig'> ,> 'grape'> ],> > [> 'kiwi'> ,> 'lemon'> ,> 'mango'> ]]> modified_matrix> => []> for> row> in> matrix:> > modified_row> => []> > for> fruit> in> row:> > modified_row.append(fruit.capitalize())> > modified_matrix.append(modified_row)> print> (modified_matrix)> |
gimp exportovat jako jpg
>
>Výstup
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>
S porozuměním seznamu
V tomto příkladu 2D seznam s názvemmatrix>
obsahující řetězce je transformován pomocí vnořeného seznamu. Výraz[[fruit.capitalize() for fruit in row] for row in matrix]>
efektivně generuje upravenou matici, kde je první písmeno každého ovoce velké, výsledkem je nová matice řetězců s počátečními velkými písmeny.
Python3
matrix> => [[> 'apple'> ,> 'banana'> ,> 'cherry'> ],> > [> 'date'> ,> 'fig'> ,> 'grape'> ],> > [> 'kiwi'> ,> 'lemon'> ,> 'mango'> ]]> modified_matrix> => [[fruit.capitalize()> for> fruit> in> row]> for> row> in> matrix]> print> (modified_matrix)> |
>
>Výstup
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>