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

У Python розуміння списків допомагає створювати нові списки з існуючих ітерованих елементів, таких як списки, рядки та кортежі.

Їхній стислий синтаксис дозволяє створювати нові списки лише в одному рядку коду. І цей підручник навчить вас, як ви можете це зробити.

Протягом наступних кількох хвилин ви дізнаєтеся:

  • Як створити новий список за допомогою циклів for,
  • Синтаксис для використання розуміння списків у Python і
  • Як змінити розуміння списку за допомогою умовного оператора if.

Крім того, ви також закодуєте кілька прикладів, які допоможуть вам краще зрозуміти розуміння списку.

Давайте зануримося.🌊

Як створити списки Python за допомогою циклів for

Припустімо, що у вас є список номерів nums. І ви хочете створити ще один список, який містить куб усіх чисел у nums. Ось як ви це зробите за допомогою циклу for у Python:

nums = [2,3,5,7]
num_cubes = []
for num in nums:
  num_cubes.append(num**3)

print(num_cubes)

# Output
[8, 27, 125, 343]

У наведеному вище коді ми маємо наступні кроки:

  • Ініціалізуйте порожній список num_cubes.
  • Перегляньте список номерів.
  • Отримайте доступ до кожного числа num і обчисліть його куб за допомогою оператора піднесення до степеня: num**3.
  • Нарешті, додайте значення в кубі до списку num_cubes

Примітка. У Python оператор піднесення до степеня ** використовується із синтаксисом: num**pow — число num зводиться до степеня pow.

Однак ви можете зробити це легше, використовуючи розуміння списку в Python. Давайте приступимо до вивчення його синтаксису.

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

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

<new_list> = [<expression> for <item> in <iterable>]

Давайте розберемо наведений вище синтаксис.

  • У Python списки поділяються двома квадратними дужками []— отже, вам потрібно вкласти в нього заяву про розуміння списку [].
  • в вказує на те, що ви циклічно переглядаєте iterable. Будь-який об’єкт Python, який можна пройти в циклі та отримати доступ до окремих елементів, наприклад списки, кортежі та рядки, є ітерованими.
  • — це результат, який ви хотіли б обчислити для кожного в .

І це звучить просто, так?

По суті, ви хотіли б щось зробити для всіх елементів у списку (або будь-якому повторюваному), щоб отримати новий список.

Використовуючи це, ми можемо спростити синтаксис, як показано на зображенні нижче.

Синтаксис розуміння списку Python (зображення автора)

Тепер, коли ви вивчили синтаксис, настав час почати кодувати. Щоб наслідувати ці приклади, ви можете скористатися онлайн-средою Python IDE від techukraine.net. Або ви можете запустити їх на локальній машині.

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

У попередньому розділі ви створили новий список num_cubes із nums. Давайте почнемо з того, що перепишемо це за допомогою розуміння списку.

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

Тепер давайте використаємо спрощений синтаксис таким чином:

  • : тут ви повинні звести в куб кожне число. Тому замініть на num**3.
  • : циклічна змінна num — окремі номери в списку.
  • : Існуючий список, який ми маємо, це nums.
  • І [num**3 for num in nums] є остаточним виразом. ✅

Зібравши все разом, ми маємо наступний фрагмент коду:

num_cubes = [num**3 for num in nums]
print(num_cubes)

# Output
[8, 27, 125, 343]

Вітаємо, ви закодували своє перше розуміння списку.🎉

Йдемо далі, давайте попрацюємо з рядками Python.

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

Припустімо, у вас є список авторів — ви можете переписати список нижче зі своїми улюбленими авторами.😄

authors = ["jane austen","george orwell","james clear","cal newport"]

Зверніть увагу, що імена авторів у списку вище написані малими літерами. Тепер ми хочемо відформатувати їх у регістрі заголовків і зберегти в новому списку під назвою author_list.

Примітка. У Python це рядковий метод назва() приймає рядок як аргумент і повертає копію рядка, відформатовану в регістрі заголовка. Тобто перша літера кожного слова пишеться з великої літери: Ім’я Прізвище

Отже, ось усе, що вам потрібно зробити:

  • прокрутити список авторів і для кожного автора в списку,
  • виклик автора.title(), щоб отримати копію рядка в регістрі заголовків.

А код Python для цього показано нижче:

authors = ["jane austen","george orwell","james clear","cal newport"]

author_list = [author.title() for author in authors]
print(author_list)

# Output
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

У наведеному вище виході подивіться, як імена всіх авторів були відформатовані в регістрі заголовків — саме цього ми й хотіли.

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

Наразі ви навчилися використовувати розуміння списків для створення нових списків з одного існуючого. Тепер давайте навчимося створювати новий список із кількох списків.

Наприклад, розглянемо цю проблему: у вас є два списки l_arr і b_arr, що містять довжину та ширину 4 прямокутників.

І вам потрібно створити нову область списку, яка включає площу цих 4 прямокутників. Пам’ятайте, площа = довжина * ширина.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

Вам знадобляться елементи з обох списків (l_arr і b_arr), щоб обчислити площу. І ви можете зробити це за допомогою функції zip() Python.

Примітка. У Python функція zip() приймає один або кілька ітерацій як аргументи з синтаксисом zip(*iterables). Потім він повертає ітератор кортежів, де кортеж i містить елемент i з кожного з ітераторів.

На наступному зображенні це докладно описано. У вас є 4 значення в l_arr і b_arr, тому діапазон індексів становить від 0 до 3. Як бачите, кортеж 0 містить l_arr[0] і b_arr[0]кортеж 1 містить l_arr[1] і b_arr[1]і так далі.

Функція Python zip() (Зображення автора)

Таким чином, ви можете виконати цикл zip(l_arr,b_arr), як показано нижче:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)

# Output
[8,5,7,27]

У наступному розділі ви дізнаєтесь, як використовувати умовні оператори в межах розуміння списку.

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

Почнемо з попереднього синтаксису для розуміння списку.

Ось синтаксис:

<new_list> = [<expression> for <item> in <iterable> if <condition>]

Замість того, щоб обчислювати для всіх елементів, ви б хотіли зробити це лише для тих елементів, які задовольняють певну <умову>, де умова := True. І це призводить до спрощеного синтаксису, як показано:

Python List Comprehension with Condition Syntax (Зображення автора)

▶ Після цього перейдемо до прикладів коду.

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

#1. Ви отримуєте рядок «Я вивчаю Python у 2022 році». Ви хочете отримати список усіх цифр у цьому рядку. Отже, як ви це робите?

У Python .isdigit() діє на символ і повертає True, якщо це цифра (0-9); інакше він повертає False.

Наведений нижче фрагмент коду показує, як можна зібрати список усіх цифр у рядку str1.

str1 = "I'm learning Python3 in 2022"

digits = [char for char in str1 if char.isdigit()]

print(digits)

# Output
['3', '2', '0', '2', '2']

У наведеному вище коді:

  • ви проходите по рядку str1,
  • отримати доступ до кожного символу, щоб перевірити, чи є він цифрою, використовуючи метод isdigit(), і
  • додавати char до нових цифр списку, лише якщо це цифра.

Візьмемо інший приклад.

#2. У вас є список фруктів.🍊 І ви хочете створити список starts_with_b, який містить усі фрукти зі списку фруктів, які починаються на b. Для запису умови можна використовувати метод startswith().

.startswith(‘char’) повертає True, якщо починається з ‘char’; інакше він повертає False.

fruits = ['blueberry','apple','banana','orange','cherry']

starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')]

print(starts_with_b)

# Output
['blueberry', 'banana']

У вихідних даних вище ми отримуємо «чорницю» та «банан», які є двома фруктами, які починаються з «b» у списку фруктів, як ми і очікували.

І на цьому наша дискусія про розуміння списку завершується.

Висновок

Сподіваюся, цей посібник допоміг вам зрозуміти розуміння списків у Python.

Підіб’ємо підсумок:

  • Ви можете використовувати [<do this> for <all-items> in <this-list>] щоб створити новий список за допомогою розуміння списку.
  • Додатково можна використовувати синтаксис [<do this> for <all-items> in <this-list> if <condition-is-True>] з умовним оператором if.

Крім того, ви також закодували кілька прикладів. Як наступний крок ви можете спробувати переписати деякі зі своїх існуючих циклів Python для створення списків за допомогою розуміння списків. Щасливого кодування! До наступного уроку.😄

Тепер ви можете подивитися, як перетворити список на словник, або дізнатися, як працювати з файлами в Python.

  Як відредагувати завантажувач Ubuntu за допомогою графічного редактора GRUB