Coding for KidsCoding for Kids
Креативні РівніВикликиПосібник для Вчителів
Голосувати за функції
Поглиблений курс розробки на Python
Розділ
>
Рівень

Розширені списки
Спискові включення

У цьому розділі ми дослідимо нові способи використання списків у Python, що стосуються оптимізації, розподілу завдань і навіть створення великих багатовимірних списків, таких як матриці, що дуже нагадують таблиці.

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

Guide

Мета

Збери та відсортуй усі коренеплоди в коморі, щоб мати змогу розмістити їх у правильних місцях за допомогою list comprehensions.

У коморі знаходяться кілька мішків, повних коренеплодів, які потрібно відсортувати, а саме: potatoes, onions та garlic. Можливо, там є овочі, які зіпсувалися. Витягни овочі, що годні до вживання, та зберігай їх у ящиках, куди вони належать.

Щоб виконати це завдання, тобі потрібно визначити, які предмети знаходяться в кожному мішку. Є три (3) константи-списки, які містять інформацію про кожен з мішків, і вони називаються: left_sack, middle_sack, right_sack. Ці константи відповідають мішкам на полі у локаціях, зазначених їх назвами.

Пройди до світлових позначок X, що розташовані перед кожним мішком, і використай функцію speak(), щоб визначити вміст кожного мішка за допомогою відповідних констант, наприклад: player.speak(left_sack). Після того, як визначиш вміст кожного мішка, знайди предмети, які потрібно видалити, такі як овочі з написами: "Bad", "Spoiled" або "Rotten".

Тобі потрібно створити нові списки, які містять лише ті предмети, що придатні до споживання. Ти міг би зробити це вручну, але це займе багато часу та може заплутати. Щоб зробити це ефективніше, ти можеш створити список із іншого списку – це називається List Comprehension.

З трьох (3) констант-списків: left_sack, middle_sack, right_sack створи три нових списки з назвами: potatoes, onions та garlic, які не містять небажаних елементів з мішків. List Comprehensions дозволяють створювати нові списки, не пишучи цілий купу коду, наприклад:

# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]

У наведеному прикладі список з назвою potatoes створюється з наявного списку sack, містячи лише ["Potatoes", "Sweet Potatoes"] і виключаючи "Spoiled Potatoes". Це досягається за допомогою створення замкнутого циклу for, використовуючи x як індекс для проходження по списку та оператори for / in для визначення і виключення небажаного елемента, тобто рядка, який містить слово "Spoiled".

Для повторення, дізнайся, чи містять константи-списки слова "Bad", "Spoiled" або "Rotten" за допомогою функції speak(), створи списки potatoes, onions та garlic використовуючи List Comprehensions, видаляючи небажані елементи, які ти виявив у кожному списку.

Після того, як ці списки будуть створені, пройди до кожної з трьох (3) золотих позначок X перед ящиками з позначками овочів і за допомогою функції place() розмісти списки у відповідних ящиках, щоб завершити рівень. Локації визначаються знаками: onions у лівому ящику, potatoes у середньому ящику та garlic у лівому ящику.

Книга Коду