logo

Înțelegeri liste imbricate în Python

Lista de înțelegere este una dintre cele mai uimitoare caracteristici ale Piton . Este o modalitate inteligentă și concisă de a crea liste prin iterarea peste un obiect iterabil. Înțelegerile de listă imbricate nu sunt altceva decât o înțelegere de listă în cadrul unei alte înțelegeri de listă care este destul de similară cu buclele imbricate pentru.

Înțelegerea listelor imbricate în sintaxa Python

Mai jos este sintaxa lui imbricat înțelegerea listei :



Sintaxă: new_list = [[expresie pentru elementul din listă] pentru elementul din listă]

Parametri:

  • Expresie : Expresie care este folosită pentru a modifica fiecare element din instrucțiune
  • Articol: Elementul din iterabil
  • Listă: Un obiect iterabil

Exemple de înțelegeri de liste imbricate Python

Mai jos sunt câteva exemple de înțelegere a listelor imbricate:



Exemplul 1: Crearea unei matrice

În acest exemplu, vom compara cum putem creați o matrice când îl creăm cu

Fără înțelegerea listei

În acest exemplu, o matrice 5×5 este creată folosind o structură de buclă imbricată. O buclă exterioară iterează de cinci ori, adăugând subliste goale lamatrix>, în timp ce o buclă interioară populează fiecare sublistă cu valori cuprinse între 0 și 4, rezultând o matrice cu valori întregi consecutive.



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

>

>

Ieșire

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

Utilizarea listei de înțelegere

Aceeași ieșire poate fi obținută folosind înțelegerea listelor imbricate într-o singură linie. În acest exemplu, o matrice 5×5 este generată utilizând o listă de înțelegere imbricată. Înțelegerea exterioară iterează de cinci ori, reprezentând rândurile, în timp ce înțelegerea interioară populează fiecare rând cu valori cuprinse între 0 și 4, rezultând o matrice cu valori întregi consecutive.

Python3




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

>

>

Ieșire

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

Exemplul 2: filtrarea unei liste imbricate folosind lista de înțelegere

Aici, vom vedea cum putem filtra o listă cu și fără utilizarea listei de înțelegere.

Fără a utiliza Lista de înțelegere

În acest exemplu, o buclă imbricată traversează o matrice 2D, extragând numere impare din lista Python din listă și adăugându-le listeiodd_numbers>. Lista rezultată conține toate elementele impare din matrice.

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

>

kajal aggarwal
>

Ieșire

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

Utilizarea listei de înțelegere

În acest exemplu, o listă de înțelegere este utilizată pentru a genera succint listaodd_numbers>prin iterarea elementelor unei matrice 2D. Doar elementele ciudate sunt incluse în lista rezultată, oferind o alternativă concisă și lizibilă la structura echivalentă a buclei imbricate.

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

>

>

Ieșire

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

Exemplul 3: Aplatizarea sublistelor imbricate

Fără înțelegerea listei

diferența dintre leu și tigru

În acest exemplu, o listă 2D numitămatrix>cu lungimi diferite de sublistă este aplatizată folosind bucle imbricate. Elementele din fiecare sublistă sunt atașate secvenţial listeiflatten_matrix>, rezultând o reprezentare aplatizată a matricei originale.

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

>

motor de căutare și exemple

>

Ieșire

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

Cu liste de înțelegere

Din nou, acest lucru se poate face folosind înțelegerea listelor imbricate, care a fost prezentată mai jos. În acest exemplu, o listă 2D numitămatrix>cu lungimi diferite de sublistă este aplatizată folosind înțelegerea listelor imbricate. Expresia[val for sublist in matrix for val in sublist]>generează succint o listă aplatizată prin includerea secvenţială a fiecărui element din subliste.

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

>

>

Ieșire

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

Exemplul 4: Manipulați șirul utilizând Lista de înțelegere

Fără înțelegerea listei

În acest exemplu, o listă 2D numitămatrix>care conțin șiruri este modificat folosind imbricat bucle . Bucla interioară scrie cu majuscule prima literă a fiecărui fruct, iar bucla exterioară construiește o nouă listă 2D,modified_matrix>, cu fructele cu majuscule, rezultând o matrice de șiruri cu majuscule inițiale.

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

>

>

Ieșire

comparație de șiruri java
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>

Cu liste de înțelegere

În acest exemplu, o listă 2D numitămatrix>care conțin șiruri de caractere este transformată folosind înțelegerea listelor imbricate. Expresia[[fruit.capitalize() for fruit in row] for row in matrix]>generează eficient o matrice modificată în care prima literă a fiecărui fruct este scrisă cu majuscule, rezultând o nouă matrice de șiruri cu majuscule inițiale.

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

>

>

Ieșire

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