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ä aliluetteloita matrix> , 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äästi odd_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




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äin flatten_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ä

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