logo

Sisäkkäisten luetteloiden ymmärtäminen Pythonissa

Listan ymmärtäminen on yksi upeimmista ominaisuuksista Python . Se on älykäs ja ytimekäs tapa luoda luetteloita iteroimalla iteroitavan objektin yli. Sisäkkäisten luetteloiden ymmärtäminen ei ole muuta kuin luettelon ymmärtäminen toisessa luettelon ymmärtämisessä, joka on melko samanlainen kuin sisäkkäiset silmukoille.

Sisäkkäisten luetteloiden ymmärtäminen Python-syntaksissa

Alla on sisäkkäisen syntaksi listan ymmärtäminen :



Syntaksi: new_list = [[lauseke luettelon kohteelle] kohteelle luettelossa]

Parametrit:

  • Ilmaisu : Lauseke, jota käytetään käskyn jokaisen kohteen muokkaamiseen
  • Tuote: Iteroitavissa oleva elementti
  • Lista: Iteroitava objekti

Python sisäkkäisten luetteloiden ymmärtämisen esimerkkejä

Alla on esimerkkejä sisäkkäisten luetteloiden ymmärtämisestä:



Esimerkki 1: Matriisin luominen

Tässä esimerkissä vertaamme, miten voimme luoda matriisin kun luomme sen kanssa

Ilman listan ymmärtämistä

Tässä esimerkissä 5 × 5 -matriisi luodaan käyttämällä sisäkkäistä silmukkarakennetta. Ulompi silmukka toistuu viisi kertaa ja lisää tyhjiä aliluetteloitamatrix>, kun taas sisäsilmukka täyttää jokaisen aliluettelon arvoilla, jotka vaihtelevat välillä 0–4, jolloin tuloksena on matriisi, jossa on peräkkäisiä kokonaislukuarvoja.



Python 3




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

>

>

Lähtö

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

Listan ymmärtämisen käyttäminen

Sama tulos voidaan saavuttaa käyttämällä sisäkkäistä luettelon ymmärtämistä yhdellä rivillä. Tässä esimerkissä 5 × 5 -matriisi luodaan käyttämällä sisäkkäistä luettelon ymmärtämistä. Ulompi ymmärtäminen toistuu viisi kertaa, mikä edustaa rivejä, kun taas sisäinen ymmärtäminen täyttää jokaisen rivin arvoilla välillä 0-4, mikä johtaa matriisiin, jossa on peräkkäisiä kokonaislukuarvoja.

Python 3




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

>

>

Lähtö

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

Esimerkki 2: Sisäkkäisen luettelon suodattaminen käyttämällä luettelon ymmärtämistä

Täällä näemme, kuinka voimme suodattaa luettelon luettelon ymmärtämisellä ja ilman sitä.

Käyttämättä luettelon ymmärtämistä

Tässä esimerkissä sisäkkäinen silmukka kulkee 2D-matriisin läpi, poimii parittomat luvut Python-luettelosta luettelossa ja lisää ne luetteloon.odd_numbers>. Tuloksena oleva luettelo sisältää kaikki parittomat elementit matriisista.

Python 3




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

>

>

Lähtö

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

Listan ymmärtämisen käyttäminen

Tässä esimerkissä luettelon ymmärtämistä käytetään luettelon luomiseen ytimekkäästiodd_numbers>iteroimalla 2D-matriisin elementtien läpi. Vain parittomat elementit sisällytetään tuloksena olevaan luetteloon, mikä tarjoaa tiiviin ja luettavan vaihtoehdon vastaavalle sisäkkäiselle silmukkarakenteelle.

Python 3




python tuple lajiteltu

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

>

>

Lähtö

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

Esimerkki 3: Sisäkkäisten aliluetteloiden litistäminen

Ilman listan ymmärtämistä

Tässä esimerkissä 2D-luettelo nimeltämatrix>aliluettelon pituudet vaihtelevat, ja se tasoitetaan sisäkkäisten silmukoiden avulla. Kunkin aliluettelon elementit liitetään luetteloon peräkkäinflatten_matrix>, jolloin tuloksena on litistetty esitys alkuperäisestä matriisista.

Python 3




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

>

>

Lähtö

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

Listan ymmärtämisellä

Jälleen tämä voidaan tehdä käyttämällä sisäkkäistä luettelon ymmärtämistä, joka on esitetty alla. Tässä esimerkissä 2D-luettelo nimeltämatrix>Vaihtelevan alilistan pituuksilla litistetään käyttämällä sisäkkäistä luettelon ymmärtämistä. Ilmaisu[val for sublist in matrix for val in sublist]>luo ytimekkäästi litteän luettelon sisällyttämällä peräkkäin jokaisen aliluettelon elementin.

Python 3




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

>

>

Lähtö

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

Esimerkki 4: Käsittele merkkijonoa käyttämällä listan ymmärtämistä

Ilman listan ymmärtämistä

Tässä esimerkissä 2D-luettelo nimeltämatrix>jotka sisältävät merkkijonoja on muokattu käyttämällä sisäkkäisiä silmukat . Sisempi silmukka kirjoittaa jokaisen hedelmän ensimmäisen kirjaimen isolla, ja ulompi silmukka muodostaa uuden 2D-luettelon,modified_matrix>, isoilla kirjaimilla kirjoitetuilla hedelmillä, jolloin saadaan matriisi merkkijonoista, joissa on alkukirjaimet.

Python 3




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

>

>

Lähtö

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

Listan ymmärtämisellä

harhaa ja varianssia

Tässä esimerkissä 2D-luettelo nimeltämatrix>merkkijonoja sisältävä muunnetaan käyttämällä sisäkkäisten luetteloiden ymmärtämistä. Ilmaisu[[fruit.capitalize() for fruit in row] for row in matrix]>luo tehokkaasti muokatun matriisin, jossa jokaisen hedelmän ensimmäinen kirjain kirjoitetaan isolla, mikä johtaa uuteen merkkijonomatriisiin, joissa on alkukirjaimet.

Python 3




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

>

>

Lähtö

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