Функції-генератори
Генераторна функція — це особливий тип функції, яка використовує ключове слово yield
замість return
для створення послідовності значень. При виклику генераторної функції повертається об'єкт-ітератор, який можна перебирати для отримання значень по одному.
Основна перевага генераторних функцій — їхня ефективність використання пам'яті. Генераторні функції створюють значення по мірі потреби, а не формують всю послідовність одразу. Це робить їх ефективними з точки зору пам'яті, особливо при роботі з великими наборами даних або нескінченними послідовностями.
Розглянемо приклад простої генераторної функції. Ця функція є генератором, який повертає логіни по одному з наданого списку:
12345678910111213141516def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
Принцип роботи генератора полягає в тому, що він дозволяє повертати значення по одному за допомогою ключового слова yield
, без збереження всіх значень у пам'яті одночасно. У нашому прикладі генератор unique_logins_from_list
перебирає список логінів, повертаючи кожен з них через yield
і зупиняється в цій точці. При виклику next()
генератор продовжує виконання з місця зупинки, ефективно повертаючи значення без необхідності зберігати весь список у пам'яті одночасно. Це робить генератори особливо корисними для обробки великих наборів даних або потоків даних.
Swipe to start coding
Генерація унікальних ідентифікаторів користувачів за допомогою генераторної функції. Функція id_generator()
повинна безперервно створювати ідентифікатори на кшталт "ID_1"
, "ID_2"
тощо.
- Ініціалізувати змінну
count
зі значенням 1, оскільки ідентифікатори починаються з 1. - Використати нескінченний цикл
while
для безперервної генерації ідентифікаторів. - Застосувати
yield
для повернення поточного ідентифікатора у форматіf"ID_{count}"
. - Збільшувати
count
на 1 після кожної ітерації. - Ініціалізувати генераторний об'єкт
id_gen
, викликавшиid_generator()
.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 4.35
Функції-генератори
Свайпніть щоб показати меню
Генераторна функція — це особливий тип функції, яка використовує ключове слово yield
замість return
для створення послідовності значень. При виклику генераторної функції повертається об'єкт-ітератор, який можна перебирати для отримання значень по одному.
Основна перевага генераторних функцій — їхня ефективність використання пам'яті. Генераторні функції створюють значення по мірі потреби, а не формують всю послідовність одразу. Це робить їх ефективними з точки зору пам'яті, особливо при роботі з великими наборами даних або нескінченними послідовностями.
Розглянемо приклад простої генераторної функції. Ця функція є генератором, який повертає логіни по одному з наданого списку:
12345678910111213141516def unique_logins_from_list(login_list): # Iterate over each login in the list for login in login_list: yield login # `yield` the current login # A predefined list of available logins login_list = ["user1", "user2", "user3", "user4", "user5"] # Creating a generator instance from the login list login_generator = unique_logins_from_list(login_list) # Generate and print 5 logins, one at a time for _ in range(5): # Each call to `next()` gives the next login print(next(login_generator))
Принцип роботи генератора полягає в тому, що він дозволяє повертати значення по одному за допомогою ключового слова yield
, без збереження всіх значень у пам'яті одночасно. У нашому прикладі генератор unique_logins_from_list
перебирає список логінів, повертаючи кожен з них через yield
і зупиняється в цій точці. При виклику next()
генератор продовжує виконання з місця зупинки, ефективно повертаючи значення без необхідності зберігати весь список у пам'яті одночасно. Це робить генератори особливо корисними для обробки великих наборів даних або потоків даних.
Swipe to start coding
Генерація унікальних ідентифікаторів користувачів за допомогою генераторної функції. Функція id_generator()
повинна безперервно створювати ідентифікатори на кшталт "ID_1"
, "ID_2"
тощо.
- Ініціалізувати змінну
count
зі значенням 1, оскільки ідентифікатори починаються з 1. - Використати нескінченний цикл
while
для безперервної генерації ідентифікаторів. - Застосувати
yield
для повернення поточного ідентифікатора у форматіf"ID_{count}"
. - Збільшувати
count
на 1 після кожної ітерації. - Ініціалізувати генераторний об'єкт
id_gen
, викликавшиid_generator()
.
Рішення
Дякуємо за ваш відгук!
single