logo

Ligzdoto sarakstu izpratne Python

Saraksta izpratne ir viena no pārsteidzošākajām funkcijām Python . Tas ir gudrs un kodolīgs veids, kā izveidot sarakstus, atkārtojot atkārtojamu objektu. Ligzdotā saraksta izpratne nav nekas cits kā saraksta izpratne citā saraksta izpratnē, kas ir diezgan līdzīga ligzdotajām cilpām.

Ligzdoto sarakstu izpratne Python sintaksē

Tālāk ir norādīta ligzdotas sintakse saraksta izpratne :



Sintakse: new_list = [[izteiksme vienumam sarakstā] vienumam sarakstā]

Parametri:

  • Izteiksme : izteiksme, kas tiek izmantota, lai modificētu katru priekšraksta vienumu
  • Lieta: Elements iterējamā
  • Saraksts: Atkārtojams objekts

Python ligzdoto sarakstu izpratnes piemēri

Tālāk ir sniegti daži ligzdotu sarakstu izpratnes piemēri.



1. piemērs: Matricas izveide

Šajā piemērā mēs salīdzināsim, kā mēs varam izveidot matricu kad mēs to veidojam ar

Bez saraksta izpratnes

Šajā piemērā 5 × 5 matrica tiek izveidota, izmantojot ligzdotas cilpas struktūru. Ārējā cilpa atkārtojas piecas reizes, pievienojot tukšus apakšsarakstusmatrix>, savukārt iekšējā cilpa aizpilda katru apakšsarakstu ar vērtībām no 0 līdz 4, kā rezultātā tiek iegūta matrica ar secīgām veselu skaitļu vērtībām.



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

>

>

Izvade

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

Saraksta izpratnes izmantošana

To pašu rezultātu var sasniegt, izmantojot ligzdotā saraksta izpratni tikai vienā rindā. Šajā piemērā 5 × 5 matrica tiek ģenerēta, izmantojot ligzdotu saraksta izpratni. Ārējā izpratne atkārtojas piecas reizes, attēlojot rindas, savukārt iekšējā izpratne aizpilda katru rindu ar vērtībām no 0 līdz 4, kā rezultātā tiek iegūta matrica ar secīgām veselu skaitļu vērtībām.

Python3




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

>

>

Izvade

[[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. piemērs. Ligzdota saraksta filtrēšana, izmantojot saraksta izpratni

Šeit mēs redzēsim, kā mēs varam filtrēt sarakstu ar un neizmantojot saraksta izpratni.

Neizmantojot saraksta izpratni

Šajā piemērā ligzdotā cilpa šķērso 2D matricu, sarakstā izvelkot nepāra skaitļus no Python saraksta un pievienojot tos sarakstam.odd_numbers>. Iegūtais saraksts satur visus nepāra elementus no matricas.

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

>

>

Izvade

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

Saraksta izpratnes izmantošana

int uz virkni konvertēšanu java

Šajā piemērā saraksta izpratne tiek izmantota, lai īsi ģenerētu sarakstuodd_numbers>atkārtojot 2D matricas elementus. Iegūtajā sarakstā ir iekļauti tikai nepāra elementi, nodrošinot kodolīgu un lasāmu alternatīvu līdzvērtīgai ligzdotās cilpas 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)>

>

>

Izvade

mit pilnā formā
[1, 3, 5, 7, 9]>

3. piemērs: Ligzdoto apakšsarakstu saplacināšana

Bez saraksta izpratnes

Šajā piemērā 2D saraksts ar nosaukumumatrix>ar dažāda garuma apakšsarakstu tiek saplacināts, izmantojot ligzdotas cilpas. Elementi no katra apakšsaraksta tiek secīgi pievienoti sarakstamflatten_matrix>, kā rezultātā tiek iegūts saplacināts sākotnējās matricas attēlojums.

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

>

>

Izvade

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

Ar saraksta izpratni

Atkal to var izdarīt, izmantojot ligzdoto sarakstu izpratni, kas parādīta zemāk. Šajā piemērā 2D saraksts ar nosaukumumatrix>ar dažāda garuma apakšsarakstu tiek saplacināts, izmantojot ligzdotu saraksta izpratni. Izteiciens[val for sublist in matrix for val in sublist]>īsi ģenerē saplacinātu sarakstu, secīgi iekļaujot katru apakšsarakstu elementu.

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

>

>

Izvade

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

4. piemērs: manipulējiet ar virkni, izmantojot saraksta izpratni

Bez saraksta izpratnes

Šajā piemērā 2D saraksts ar nosaukumumatrix>kas satur virknes, tiek modificēts, izmantojot ligzdotu cilpas . Iekšējā cilpa katra augļa pirmo burtu raksta ar lielo burtu, un ārējā cilpa veido jaunu 2D sarakstu,modified_matrix>, ar lielajiem burtiem, kā rezultātā tiek izveidota virkņu matrica ar sākuma lielajiem burtiem.

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

>

>

Izvade

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

Ar saraksta izpratni

Šajā piemērā 2D saraksts ar nosaukumumatrix>kas satur virknes, tiek pārveidots, izmantojot ligzdoto saraksta izpratni. Izteiciens[[fruit.capitalize() for fruit in row] for row in matrix]>efektīvi ģenerē modificētu matricu, kurā katra augļa pirmais burts tiek rakstīts ar lielo burtu, kā rezultātā tiek izveidota jauna virkņu matrica ar sākotnējiem lielajiem burtiem.

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

>

>

Izvade

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