logo

Įdėto sąrašo supratimas Python

Sąrašo supratimas yra viena iš nuostabiausių funkcijų Python . Tai protingas ir glaustas būdas kurti sąrašus kartojant per iteruojamą objektą. Įdėto sąrašo supratimas yra ne kas kita, kaip sąrašo supratimas kito sąrašo supratimo procese, kuris yra gana panašus į įdėtą kilpoms.

Įdėto sąrašo supratimas Python sintaksėje

Žemiau pateikiama įdėtos sintaksė sąrašo supratimas :



Sintaksė: new_list = [[sąrašo elemento išraiška] elementui sąraše]

Parametrai:

  • Išraiška : išraiška, naudojama kiekvienam teiginio elementui modifikuoti
  • Prekė: Elementas kartojamas
  • Sąrašas: Iteruojamas objektas

Python įdėto sąrašo supratimo pavyzdžiai

Toliau pateikiami keli įdėto sąrašo supratimo pavyzdžiai:



1 pavyzdys: Matricos kūrimas

Šiame pavyzdyje palyginsime, kaip galime sukurti matricą kai kuriame jį su

Be sąrašo supratimo

Šiame pavyzdyje 5 × 5 matrica sukuriama naudojant įdėtos kilpos struktūrą. Išorinis ciklas kartojasi penkis kartus, pridėdamas tuščius posąraščiusmatrix>, o vidinė kilpa užpildo kiekvieną posąrašį reikšmėmis nuo 0 iki 4, todėl gaunama matrica su iš eilės einančiomis sveikųjų skaičių reikšmėmis.



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

>

>

Išvestis

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

Sąrašo supratimo naudojimas

Tą pačią išvestį galima pasiekti naudojant įdėto sąrašo supratimą tik vienoje eilutėje. Šiame pavyzdyje 5 × 5 matrica generuojama naudojant įdėto sąrašo supratimą. Išorinis supratimas kartojasi penkis kartus, atspindėdamas eilutes, o vidinis supratimas kiekvieną eilutę užpildo reikšmėmis nuo 0 iki 4, todėl gaunama matrica su iš eilės einančiomis sveikųjų skaičių reikšmėmis.

1 iš 1000,00

Python3




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

>

>

Išvestis

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

2 pavyzdys: įdėto sąrašo filtravimas naudojant sąrašo supratimą

Čia pamatysime, kaip galime filtruoti sąrašą su ir nenaudojant sąrašo supratimo.

Nenaudojant sąrašo supratimo

Šiame pavyzdyje įdėta kilpa kerta 2D matricą, sąraše ištraukdama nelyginius skaičius iš Python sąrašo ir pridėdama juos prie sąrašo.odd_numbers>. Gautame sąraše yra visi nelyginiai elementai iš matricos.

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

>

>

Išvestis

8-1 multiplekseris
[1, 3, 5, 7, 9]>

Sąrašo supratimo naudojimas

Šiame pavyzdyje sąrašo supratimas naudojamas glaustai sugeneruoti sąrašąodd_numbers>kartodami per 2D matricos elementus. Į gautą sąrašą įtraukiami tik nelyginiai elementai, suteikiantys glaustą ir skaitomą alternatyvą lygiavertei įdėtosios kilpos struktūrai.

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

>

>

Išvestis

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

3 pavyzdys: Įdėtųjų antrinių sąrašų išlyginimas

Be sąrašo supratimo

Šiame pavyzdyje 2D sąrašas pavadintasmatrix>su įvairaus ilgio posąraščiu išlyginamas naudojant įdėtas kilpas. Kiekvieno posąrašo elementai nuosekliai pridedami prie sąrašoflatten_matrix>, todėl pradinės matricos vaizdas yra suplotas.

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

>

>

Išvestis

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

Su sąrašo supratimu

Vėlgi, tai galima padaryti naudojant įdėto sąrašo supratimą, kuris parodytas žemiau. Šiame pavyzdyje 2D sąrašas pavadintasmatrix>su įvairaus ilgio posąraščiu yra išlyginamas naudojant įdėtojo sąrašo supratimą. Išsireiškimas[val for sublist in matrix for val in sublist]>glaustai generuoja išlygintą sąrašą, nuosekliai įtraukdamas kiekvieną elementą iš posąrašų.

Python3




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

>

>

duomenų bazės projektavimas dbms
Išvestis

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

4 pavyzdys: manipuliuokite eilute naudodami sąrašo supratimą

Be sąrašo supratimo

Šiame pavyzdyje 2D sąrašas pavadintasmatrix>su eilėmis modifikuojamas naudojant įdėtą kilpos . Vidinėje kilpoje kiekvieno vaisiaus pirmoji raidė rašoma didžiosiomis raidėmis, o išorinė sukuria naują 2D sąrašą,modified_matrix>, su didžiosiomis raidėmis rašomi vaisiai, todėl gaunama eilučių su pradinėmis didžiosiomis raidėmis matrica.

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

>

>

Išvestis

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

Su sąrašo supratimu

Šiame pavyzdyje 2D sąrašas pavadintasmatrix>turinčios eilutes, transformuojamos naudojant įdėtojo sąrašo supratimą. Išsireiškimas[[fruit.capitalize() for fruit in row] for row in matrix]>efektyviai sukuria modifikuotą matricą, kurioje pirmoji kiekvieno vaisiaus raidė rašoma didžiosiomis raidėmis, todėl gaunama nauja eilučių su pradinėmis didžiosiomis raidėmis matrica.

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

>

>

Išvestis

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