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