Модуль 7B: Просунуті структури даних

List comprehensions (генератори списків)

📖 Теорія
List comprehension — компактний спосіб створення списків в один рядок.

Базовий синтаксис:
[вираз for елемент in послідовність]

З умовою (фільтр):
[вираз for елемент in послідовність if умова]

З тернарним оператором:
[так if умова else ні for елемент in послідовність]

Переваги:
• Коротше та читабельніше, ніж цикл + append
• Працює швидше за звичайний цикл
• Часто використовується в реальному коді

Коли НЕ використовувати:
• Якщо логіка складна — краще звичайний цикл
• Якщо потрібні побічні ефекти (print, запис у файл)
• Якщо результат нечитабельний — розбийте на цикл
💡 Приклад коду
Вивід:

                        
📝 ЗАВДАННЯ (2)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 208
" data-task-id="
Warning: Undefined array key "id" in /home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 209
" data-xp="10">
1.
Завдання: Перепишіть через list comprehension
10 XP
Перепишіть кожен цикл в один рядок:

1) result = []
for i in range(1, 11):
result.append(i * 3)

2) long_words = []
for word in ['кіт', 'програмування', 'дім', 'розробка']:
if len(word) > 5:
long_words.append(word)

3) temps_c = [0, 20, 37, 100]
temps_f = []
for c in temps_c:
temps_f.append(c * 9/5 + 32)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: Формат: [вираз for змінна in колекція if умова]
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
🔓 Розв'язок:
result = [i * 3 for i in range(1, 11)]
print(result)

long_words = [w for w in ['кіт', 'програмування', 'дім', 'розробка'] if len(w) > 5]
print(long_words)

temps_c = [0, 20, 37, 100]
temps_f = [c * 9/5 + 32 for c in temps_c]
print(temps_f)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 296
">
Вивід:

                                
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 304
">

/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 208
" data-task-id="
Warning: Undefined array key "id" in /home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 209
" data-xp="20">
2.
Завдання: Фільтрація даних
20 XP
Дано список оцінок: grades = [85, 42, 91, 67, 55, 78, 93, 38, 70, 60]. Використовуючи list comprehension, створіть:
1) Список оцінок вище 70
2) Список де кожна оцінка замінена на 'Склав' (>=60) або 'Не склав' (<60)
3) Список оцінок збільшених на 10, але не більше 100
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: Для п.3 використовуйте min(grade + 10, 100)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
🔓 Розв'язок:
grades = [85, 42, 91, 67, 55, 78, 93, 38, 70, 60]

high = [g for g in grades if g > 70]
print('Вище 70:', high)

status = ['Склав' if g >= 60 else 'Не склав' for g in grades]
print('Статуси:', status)

boosted = [min(g + 10, 100) for g in grades]
print('З бонусом:', boosted)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 296
">
Вивід:

                                
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 304
">