logo

Розуміння вкладених списків у Python

Розуміння списку є однією з найдивовижніших особливостей Python . Це розумний і стислий спосіб створення списків шляхом повторення об’єкта, який можна повторювати. Розуміння вкладених списків — це не що інше, як розуміння списків у межах іншого розуміння списків, яке дуже схоже на вкладені цикли for.

Розуміння вкладеного списку в синтаксисі Python

Нижче наведено синтаксис вкладеного розуміння списку :



Синтаксис: new_list = [[вираз для елемента в списку] для елемента в списку]

Параметри:

  • експресія : Вираз, який використовується для зміни кожного елемента в операторі
  • пункт: Елемент у ітерабельному
  • Список: Ітерований об’єкт

Приклади розуміння вкладених списків Python

Нижче наведено кілька прикладів розуміння вкладених списків:



Приклад 1: Створення матриці

У цьому прикладі ми порівняємо, як ми можемо створити матрицю коли ми його створюємо

Без розуміння списку

У цьому прикладі матриця 5×5 створюється за допомогою структури вкладеного циклу. Зовнішній цикл повторюється п’ять разів, додаючи порожні підсписки доmatrix>, тоді як внутрішній цикл заповнює кожен підсписок значеннями в діапазоні від 0 до 4, у результаті чого утворюється матриця з послідовними цілими значеннями.



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

>

>

Вихід

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

Використання розуміння списку

Того самого результату можна отримати за допомогою розуміння вкладеного списку лише в одному рядку. У цьому прикладі матриця 5×5 генерується за допомогою розуміння вкладеного списку. Зовнішнє розуміння повторюється п’ять разів, представляючи рядки, тоді як внутрішнє розуміння заповнює кожен рядок значеннями в діапазоні від 0 до 4, у результаті чого утворюється матриця з послідовними цілими значеннями.

Python3




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

>

>

Вихід

[[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: Фільтрування вкладеного списку за допомогою розуміння списку

Тут ми побачимо, як ми можемо фільтрувати список за допомогою та без використання розуміння списку.

Без використання розуміння списку

У цьому прикладі вкладений цикл проходить двовимірну матрицю, вилучаючи непарні числа зі списку Python у списку та додаючи їх до спискуodd_numbers>. Отриманий список містить усі непарні елементи з матриці.

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

>

>

Вихід

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

Використання розуміння списку

У цьому прикладі для стислого створення списку використовується розуміння спискуodd_numbers>шляхом ітерації елементів двовимірної матриці. Лише непарні елементи включено до результуючого списку, забезпечуючи стислу та зрозумілу альтернативу еквівалентній структурі вкладеного циклу.

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

>

>

Вихід

як перетворити рядок на ціле число
[1, 3, 5, 7, 9]>

приклад 3: Зведення вкладених підсписків

Без розуміння списку

У цьому прикладі двовимірний список під назвоюmatrix>із змінною довжиною підсписку зрівнюється за допомогою вкладених циклів. Елементи з кожного підсписку послідовно додаються до спискуflatten_matrix>, що призводить до згладженого представлення вихідної матриці.

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

>

>

Вихід

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

З розумінням списку

Знову ж таки, це можна зробити за допомогою розуміння вкладеного списку, яке показано нижче. У цьому прикладі двовимірний список під назвоюmatrix>із змінною довжиною підсписку зрівнюється за допомогою розуміння вкладеного списку. Вираз[val for sublist in matrix for val in sublist]>стисло генерує зведений список шляхом послідовного включення кожного елемента з підсписків.

Python3


шрифт gimp



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

>

>

Вихід

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

Приклад 4: Маніпулювання рядком за допомогою розуміння списку

Без розуміння списку

У цьому прикладі двовимірний список під назвоюmatrix>що містить рядки, змінено за допомогою вкладених петлі . Внутрішній цикл робить першу літеру кожного фрукта великою, а зовнішній цикл створює новий двовимірний список,modified_matrix>, з великими літерами, в результаті чого утворюється матриця рядків із початковими великими літерами.

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

>

>

Вихід

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

З розумінням списку

У цьому прикладі двовимірний список під назвоюmatrix>що містить рядки, перетворюється за допомогою розуміння вкладеного списку. Вираз[[fruit.capitalize() for fruit in row] for row in matrix]>ефективно генерує модифіковану матрицю, де перша літера кожного фрукта написана великою, у результаті чого створюється нова матриця рядків із початковими великими літерами.

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

>

>

Вихід

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