logo

Zagnieżdżone wyrażenia listowe w Pythonie

Rozumienie list to jedna z najbardziej niesamowitych funkcji programu Pyton . Jest to inteligentny i zwięzły sposób tworzenia list poprzez iterację po iterowalnym obiekcie. Zagnieżdżone wyrażenia listowe to nic innego jak zrozumienie list w ramach innego rozumienia list, które jest całkiem podobne do zagnieżdżonych pętli for.

Rozumienie list zagnieżdżonych w składni Pythona

Poniżej znajduje się składnia zagnieżdżonego zrozumienie listy :



Składnia: new_list = [[wyrażenie dla pozycji na liście] dla pozycji na liście]

Parametry:

  • Wyrażenie : Wyrażenie używane do modyfikowania każdego elementu instrukcji
  • Przedmiot: Element w iterowalnym
  • Lista: Iterowalny obiekt

Przykłady wyrażeń list zagnieżdżonych w Pythonie

Poniżej znajduje się kilka przykładów zrozumienia list zagnieżdżonych:



Przykład 1: Tworzenie matrycy

W tym przykładzie porównamy, jak możemy utwórz matrycę kiedy go tworzymy

Bez zrozumienia listy

W tym przykładzie tworzona jest macierz 5×5 przy użyciu struktury zagnieżdżonej pętli. Zewnętrzna pętla wykonuje iterację pięć razy, dołączając puste podlisty domatrix>, podczas gdy wewnętrzna pętla wypełnia każdą podlistę wartościami z zakresu od 0 do 4, w wyniku czego powstaje macierz z kolejnymi wartościami całkowitymi.



samouczek języka programowania Java

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

>

>

Wyjście

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

Korzystanie ze zrozumienia list

Ten sam wynik można uzyskać, stosując funkcję rozumienia list zagnieżdżonych w jednym wierszu. W tym przykładzie generowana jest macierz 5×5 przy użyciu zagnieżdżonego rozumienia list. Zewnętrzne zrozumienie iteruje pięć razy, reprezentując wiersze, podczas gdy wewnętrzne zrozumienie wypełnia każdy wiersz wartościami z zakresu od 0 do 4, w wyniku czego powstaje macierz z kolejnymi wartościami całkowitymi.

Python3




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

>

>

Wyjście

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

Przykład 2: Filtrowanie listy zagnieżdżonej przy użyciu rozumienia listy

Tutaj zobaczymy, jak możemy filtrować listę ze zrozumieniem listy i bez niego.

Bez użycia rozumienia listy

W tym przykładzie zagnieżdżona pętla przechodzi przez macierz 2D, wyodrębniając liczby nieparzyste z listy Pythona na liście i dołączając je do listyodd_numbers>. Wynikowa lista zawiera wszystkie nieparzyste elementy macierzy.

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

>

numer Java na ciąg
>

Wyjście

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

Korzystanie ze zrozumienia list

W tym przykładzie do zwięzłego wygenerowania listy użyto rozumienia listyodd_numbers>poprzez iterację po elementach macierzy 2D. Na wynikowej liście znajdują się tylko elementy nieparzyste, co stanowi zwięzłą i czytelną alternatywę dla równoważnej struktury zagnieżdżonej pętli.

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

>

>

Wyjście

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

Przykład 3: Spłaszczanie zagnieżdżonych list podrzędnych

Bez zrozumienia listy

zmień nazwę folderu Linux

W tym przykładzie lista 2D o nazwiematrix>o różnej długości podlisty jest spłaszczana za pomocą zagnieżdżonych pętli. Elementy z każdej podlisty są kolejno dołączane do listyflatten_matrix>, co daje spłaszczoną reprezentację oryginalnej macierzy.

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

>

>

Wyjście

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

Ze zrozumieniem listy

Ponownie można to zrobić za pomocą rozumienia list zagnieżdżonych, co pokazano poniżej. W tym przykładzie lista 2D o nazwiematrix>o różnej długości podlist jest spłaszczana przy użyciu rozumienia list zagnieżdżonych. Ekspresja[val for sublist in matrix for val in sublist]>zwięźle generuje spłaszczoną listę, włączając kolejno każdy element z podlist.

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

Algorytm planowania okrężnego

>

>

Wyjście

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

Przykład 4: Manipulowanie ciągiem przy użyciu rozumienia listy

Bez zrozumienia listy

W tym przykładzie lista 2D o nazwiematrix>zawierające ciągi jest modyfikowane przy użyciu zagnieżdżenia pętle . Wewnętrzna pętla pisze wielką pierwszą literę każdego owocu, a zewnętrzna pętla tworzy nową listę 2D,modified_matrix>, z owocami pisanymi wielkimi literami, co daje macierz ciągów znaków z początkowymi wielkimi literami.

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

>

>

Wyjście

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

Ze zrozumieniem listy

W tym przykładzie lista 2D o nazwiematrix>zawierające ciągi są przekształcane przy użyciu zagnieżdżonego rozumienia list. Ekspresja[[fruit.capitalize() for fruit in row] for row in matrix]>skutecznie generuje zmodyfikowaną macierz, w której pierwsza litera każdego owocu jest pisana wielką literą, co skutkuje nową macierzą ciągów znaków z początkowymi dużymi literami.

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

>

>

Wyjście

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