logo

Vnořená vysvětlení seznamu v Pythonu

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']]>