Друкарня від WE.UA

List comprehension у Python

Зміст

Всіх вітаю! У цій статті ми розглянемо принцип list comprehension у Python та як успішно використовувати його замість більш довгих відрізків коду.

Теоретичний огляд

Що таке list comprehension?

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

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

В чому переваги list comprehension?

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

Які недоліки list comprehension?

На початку вам може здатися, що list comprehension є універсальним підходом для створення циклів та інших довгих конструкцій, але через це в нього є і деякі недоліки.

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

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

Тим не менш, питання, як, де і коли використовувати list comprehension залишається за вами. Сам підхід у жодному разі не є поганим, але потрібно в усьому знати міру.

Використання з циклом for

Звичаний код

Напишемо звичайний код без list comprehension:

for i in range(11):
    print(i)

Результат:

0
1
2
3
4
5
6
7
8
9
10

Застосування list comprehensions

Перший шаблон list comprehension

Спершу розглянемо шаблон конструкції list comprehension.

Тут exp є скороченням від expression і означає вираз — це саме та змінна i, яку ми використовуємо у циклі for. Після цієї змінної нам потрібно записати сам цикл for і на цьому все.

Тепер запишемо попередній код, але вже використовуючи конструкцію list comprehension:

one_line = [i for i in range(11)]
print(one_line)

Результат:

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

Як бачимо, код працює згідно з першим шаблоном.

Застосування list comprehension з умовами

Тільки if

Другий шаблон list comprehension

Тепер наш минулий шаблон дещо змінився, бо до нього додалася умова if, що фільтруватиме результат. Надалі, якщо ви використовуєте лише if — вам потрібно буде записати конструкцію list comprehension за цим шаблоном.

Ось як виглядає звичайний код:

for i in range(11):
    if i % 2 == 0:
        print(i)

Результат:

0
2
4
6
8
10

Напишемо той самий код за допомогою list comprehension:

one_line = [i for i in range(11) if i % 2 == 0]
print(one_line)

Результати:

[0, 2, 4, 6, 8, 10]

Повна конструкція if-else

Третій шаблон list comprehension

Станом на зараз ми розглянули запис умови лише за допомогою ключового слова if, не вказавши else. Проте важливо показати і приклад з використанням повної конструкції if-else.

На цьому моменті варто звернути увагу на третій шаблон, бо використання саме повноцінної конструкції if-else значно змінює порядок елементів у конструкції list comprehension.

Спочатку додамо else у код без list comprehension:

for i in range(11):
    if i % 2 == 0:
        print(i)

    else:
        print("-")

Результат:

0
-
2
-
4
-
6
-
8
-
10

Тепер спробуємо записати повну конструкцію if-else у list comprehension:

one_line = [i if i % 2 == 0 else "-" for i in range(11)]
print(one_line)

Результат:

[0, '-', 2, '-', 4, '-', 6, '-', 8, '-', 10]

Отже, код за третім шаблоном працює абсолютно правильно.

Висновок

У підсумку ми обговорили основні переваги та недоліки list comprehension і навчилися використовувати його практично, пам’ятаючи головні шаблони, за якими необхідно записувати цю конструкцію.

Всім дякую за увагу!

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@magnifiquedigitalworld

Прекрасний цифровий світ

106Довгочити
3.6KПерегляди
30Підписники
На Друкарні з 14 липня 2025

Більше від автора

Це також може зацікавити:

  • Таки рубрика #5 — гнучкість та анархізм

    Таки новий випуск цікавої для багатьох рубрики. Минулого тижня я повністю впевнився, що статичний список категорій не буде працювати довго.

    Теми цього довгочиту:

    Таки Рубрика
  • Java. Logging

    Наприклад, метрикою може бути кількість викликів до бази даних або кількість отриманих запитів за секунду (rps — requests per second). Ці метрики, коли вони збираються протягом часу, можуть допомогти зрозуміти поведінку та продуктивність додатку.

    Теми цього довгочиту:

    Програмування
  • Скільки продажів потрібно вашому бізнесу, щоб вийти в нуль?

    Кожен підприємець прагне, щоб його бізнес приносив прибуток. Але перш ніж почати заробляти, компанія має покрити всі витрати на свою діяльність. Скільки товарів потрібно продати або скільки послуг надати, щоб не працювати в мінус?

    Теми цього довгочиту:

    Маркетинг

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • Таки рубрика #5 — гнучкість та анархізм

    Таки новий випуск цікавої для багатьох рубрики. Минулого тижня я повністю впевнився, що статичний список категорій не буде працювати довго.

    Теми цього довгочиту:

    Таки Рубрика
  • Java. Logging

    Наприклад, метрикою може бути кількість викликів до бази даних або кількість отриманих запитів за секунду (rps — requests per second). Ці метрики, коли вони збираються протягом часу, можуть допомогти зрозуміти поведінку та продуктивність додатку.

    Теми цього довгочиту:

    Програмування
  • Скільки продажів потрібно вашому бізнесу, щоб вийти в нуль?

    Кожен підприємець прагне, щоб його бізнес приносив прибуток. Але перш ніж почати заробляти, компанія має покрити всі витрати на свою діяльність. Скільки товарів потрібно продати або скільки послуг надати, щоб не працювати в мінус?

    Теми цього довгочиту:

    Маркетинг