logo

Kapslade listförståelser i Python

Listförståelse är en av de mest fantastiska funktionerna i Pytonorm . Det är ett smart och kortfattat sätt att skapa listor genom att iterera över ett itererbart objekt. Kapslade listförståelse är inget annat än en listförståelse inom en annan listförståelse som är ganska lik kapslad för loopar.

Kapslad listaförståelse i Python-syntax

Nedan visas syntaxen för kapslade listförståelse :



Syntax: new_list = [[uttryck för objekt i listan] för objekt i listan]

Parametrar:

  • Uttryck : Uttryck som används för att modifiera varje objekt i satsen
  • Artikel: Elementet i det iterbara
  • Lista: Ett iterabelt objekt

Python kapslade listförståelseexempel

Nedan följer några exempel på förståelse av kapslade listor:



Exempel 1: Skapa en matris

I det här exemplet kommer vi att jämföra hur vi kan skapa en matris när vi skapar det med

Utan Listförståelse

I det här exemplet skapas en 5×5-matris med hjälp av en kapslad loopstruktur. En yttre slinga itererar fem gånger och lägger till tomma underlistor tillmatrix>, medan en inre slinga fyller varje underlista med värden från 0 till 4, vilket resulterar i en matris med på varandra följande heltalsvärden.



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)>

>

>

Produktion

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

Använda listförståelse

Samma utdata kan uppnås med hjälp av kapslad listförståelse på bara en rad. I det här exemplet genereras en 5×5-matris med hjälp av en kapslad listförståelse. Den yttre förståelsen itererar fem gånger, vilket representerar raderna, medan den inre förståelsen fyller varje rad med värden från 0 till 4, vilket resulterar i en matris med på varandra följande heltalsvärden.

sträng i java-metoder

Python3




# Nested list comprehension> matrix>=> [[j>for> j>in> range>(>5>)]>for> i>in> range>(>5>)]> print>(matrix)>

byggare designmönster
>

>

Produktion

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

Exempel 2: Filtrera en kapslad lista med hjälp av listförståelse

Här kommer vi att se hur vi kan filtrera en lista med och utan att använda listförståelse.

Utan att använda listförståelse

I det här exemplet går en kapslad loop genom en 2D-matris, extraherar udda tal från Python-listan i listan och lägger till dem i listanodd_numbers>. Den resulterande listan innehåller alla udda element från matrisen.

Python3




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)>

>

>

Produktion

[1, 3, 5, 7, 9]>

Använda listförståelse

I det här exemplet används en listförståelse för att kortfattat generera listanodd_numbers>genom att iterera genom elementen i en 2D-matris. Endast udda element ingår i den resulterande listan, vilket ger ett kortfattat och läsbart alternativ till motsvarande kapslade loopstruktur.

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)>

>

>

Produktion

[1, 3, 5, 7, 9]>

Exempel 3: Platta ut kapslade underlistor

Utan Listförståelse

I det här exemplet namnges en 2D-listamatrix>med varierande underlistlängder plattas ut med hjälp av kapslade loopar. Elementen från varje underlista läggs sekventiellt till listanflatten_matrix>, vilket resulterar i en tillplattad representation av den ursprungliga matrisen.

tostring-metoden i java

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)>

>

>

Produktion

[1, 2, 3, 4, 5, 6, 7, 8, 9]>

Med Listförståelse

Återigen kan detta göras med hjälp av kapslad listförståelse som har visats nedan. I det här exemplet namnges en 2D-listamatrix>med varierande underlistlängder plattas ut med hjälp av kapslad listförståelse. Uttrycket[val for sublist in matrix for val in sublist]>genererar kortfattat en tillplattad lista genom att sekventiellt inkludera varje element från underlistorna.

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)>

>

>

Produktion

[1, 2, 3, 4, 5, 6, 7, 8, 9]>

Exempel 4: Manipulera sträng med hjälp av listförståelse

Utan Listförståelse

I det här exemplet namnges en 2D-listamatrix>innehållande strängar modifieras med kapslade slingor . Den inre slingan använder den första bokstaven i varje frukt med stor bokstav, och den yttre slingan konstruerar en ny 2D-lista,modified_matrix>, med frukterna med versaler, vilket resulterar i en matris av strängar med initiala versaler.

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)>

>

>

Produktion

[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>

Med Listförståelse

I det här exemplet namnges en 2D-listamatrix>innehållande strängar omvandlas med hjälp av kapslad listförståelse. Uttrycket[[fruit.capitalize() for fruit in row] for row in matrix]>genererar effektivt en modifierad matris där den första bokstaven i varje frukt är versal, vilket resulterar i en ny matris av strängar med initiala versaler.

Python3


formatera datumet i java



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)>

>

>

Produktion

[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>