{"cells":[{"cell_type":"markdown","metadata":{"id":"SFU_q4rFBbz0"},"source":["# Списки"]},{"cell_type":"code","source":[],"metadata":{"id":"dWhR0dmtCsz9"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"qSNAEIExBbz2"},"source":["_Список_ - це набір елементів, наступних у певному порядку. Ви можете створити список для зберігання букв алфавіту, цифр від 0 до 9 або імен всіх членів вашої родини. У список можна помістити будь-яку інформацію, причому дані в списку навіть не повинні бути якось пов'язані один з одним. Так як список зазвичай містить більше одного елемента, рекомендується присвоювати спискам імена в множині: letters, digits, names і т.д.\n","У мові Python список позначається квадратними дужками ([]), а окремі елементи списку розділяються комами. Простий приклад списку з назвами моделей велосипедів:"]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6KGrHNDpBbz2","executionInfo":{"status":"ok","timestamp":1677144047835,"user_tz":-120,"elapsed":6,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"outputId":"b40b516e-601c-4098-f5ba-ffefb1bf1857"},"outputs":[{"output_type":"stream","name":"stdout","text":["['trek', 'cannondale', 'redline', 'specialized', 3, 6, [1, 3, 5]]\n"]}],"source":["bicycles = [\"trek\", 'cannondale', 'redline', 'specialized', 3, 6, [1, 3, 5] ]\n","\n","print(bicycles)"]},{"cell_type":"markdown","metadata":{"id":"QOojGHUtBbz3"},"source":["## Звернення до елементів списку"]},{"cell_type":"markdown","metadata":{"id":"2GR7I8d8Bbz4"},"source":["Щоб звернутися до елемента в списку, вкажіть ім'я списку, за яким слідує індекс елемента в квадратних дужках. Наприклад, назва першого велосипеда в списку _bicycles_ виводиться таким чином:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"uMWUcAvUBbz4","outputId":"b543551f-d23b-4091-f4a5-34b5999626be","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1649843358987,"user_tz":-180,"elapsed":7,"user":{"displayName":"Иван Клопов","userId":"16257059839054245446"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["trek\n","cannondale\n"]}],"source":["bicycles = ['trek', 'cannondale', 'redline', 'specialized']\n","print(bicycles[0])\n","print(bicycles[1])"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fjwXPqA4Bbz4","outputId":"7c9b75b4-25e1-4840-e381-b857c30e9234"},"outputs":[{"name":"stdout","output_type":"stream","text":["Trek\n"]}],"source":["bicycles = ['trek', 'cannondale', 'redline', 'specialized']\n","print(bicycles[0].title())"]},{"cell_type":"markdown","metadata":{"id":"duLqItM1Bbz5"},"source":["## Індекси починаються з 0, а не з 1"]},{"cell_type":"markdown","metadata":{"id":"2K9SLKoeBbz5"},"source":["Індекси починаються з 0, а не з 1. У наступному прикладі виводяться назви велосипедів з індексами 1 та 3:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Din8b6zsBbz5","outputId":"736a9042-e224-4657-9bf8-5e975f7831bd"},"outputs":[{"name":"stdout","output_type":"stream","text":["cannondale\n","specialized\n"]}],"source":["bicycles = ['trek', 'cannondale', 'redline', 'specialized']\n","print(bicycles[1])\n","print(bicycles[3])"]},{"cell_type":"markdown","metadata":{"id":"sD61K_VEBbz5"},"source":["Python також має спеціальний синтаксис для звернення до останнього елемента списку. Якщо запитувати елемент синдексом –1, Python завжди повертає останній елемент у списку:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"aE-CweHABbz6","outputId":"457fa042-2c64-4b4c-9f37-9e6c3eebf95d","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1649843579591,"user_tz":-180,"elapsed":266,"user":{"displayName":"Иван Клопов","userId":"16257059839054245446"}}},"outputs":[{"output_type":"stream","name":"stdout","text":["redline\n"]}],"source":["bicycles = ['trek', 'cannondale', 'redline', 'specialized']\n","print(bicycles[-2])"]},{"cell_type":"markdown","metadata":{"id":"4ZgLTr7QBbz6"},"source":["## Використання окремих елементів зі списку"]},{"cell_type":"markdown","metadata":{"id":"7RTN85oZBbz6"},"source":["Окремі значення зі списку використовуються так само, як і будь-які інші змінні. Наприклад, ви можете скористатися конкатенацією для побудови повідомлення, що містить значення зі списку."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"bKpfRSS6Bbz6","outputId":"a69457e9-5a2e-4b3a-d3a7-c0ad9a319397"},"outputs":[{"name":"stdout","output_type":"stream","text":["My first bicycle was a Trek.\n"]}],"source":["bicycles = ['trek', 'cannondale', 'redline', 'specialized', \"5\"]\n","message = \"My first bicycle was a \" + bicycles[0].title() + \".\"\n","print(message)"]},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 1\n","Імена: Збережіть імена кількох своїх друзів у списку з іменем names. Виведіть ім'я кожного друга, звернувшись до кожного елемента списку (по одному за раз)."],"metadata":{"id":"QBqlRNmU0NBW"}},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 2\n","Повідомлення: почніть зі списку, використаного в завданні 2-1, але замість виведення імені кожної людини виведіть повідомлення. Основний текст усіх повідомлень має бути однаковим, але кожне повідомлення має містити ім'я адресата."],"metadata":{"id":"csUPYUjwFKbL"}},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 3\n","Власний список: виберіть свій улюблений транспорт (наприклад, мотоцикли або машини) і створіть список з прикладами. Використовуйте свій список для виведення твердження про елементи типу: «Я хотів би купити мотоцикл Honda»."],"metadata":{"id":"yFKS06cdFbCs"}},{"cell_type":"markdown","metadata":{"id":"HvhaxN74Bbz6"},"source":["## Зміна, додавання та видалення елементів"]},{"cell_type":"markdown","metadata":{"id":"WDuap8yBBbz7"},"source":["Зазвичай ви створюватимете _динамічні_ списки; це означає, що під час виконання програми у створеному вами списку додаватимуться і видалятимуться елементи. Наприклад, ви можете створити гру, в якій гравець повинен стріляти кораблями космічних загарбників. Вихідний набір кораблів зберігається у списку; щоразу, коли ви збиваєте корабель, він видаляється зі списку. Щоразу, коли на екрані з'являється новий ворог, він включається до списку. Довжина списку кораблів зменшуватиметься і збільшуватиметься під час гри."]},{"cell_type":"markdown","metadata":{"id":"RjofD4lHBbz7"},"source":["### Зміна елементів у списку"]},{"cell_type":"markdown","metadata":{"id":"3XL6rlpXBbz7"},"source":["Синтаксис зміни елемента нагадує синтаксис звернення до списку. Щоб змінити елемент, вкажіть ім'я списку і індекс зміненого елемента у квадратних дужках; далі задайте нове значення, яке має бути присвоєно елементу."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"LWRcTxGBBbz7","outputId":"39d18592-8242-4a39-d8f3-6e96ea21d4bf"},"outputs":[{"name":"stdout","output_type":"stream","text":["['honda', 'yamaha', 'suzuki']\n","['ducati', 'yamaha', 'suzuki']\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","print(motorcycles)\n","motorcycles[0] = 'ducati'\n","print(motorcycles)"]},{"cell_type":"markdown","metadata":{"id":"wXgE9NFUBbz7"},"source":["### Додавання елементів до списку"]},{"cell_type":"markdown","metadata":{"id":"_l87B1YeBbz7"},"source":["Нові елементи можуть додаватися списки з різних причин - наприклад, для появи на екрані нових космічних кораблів, включення нових даних у візуалізацію або додавання нових зареєстрованих користувачів на ваш сайт. Python надає кілька способів додавання нових даних до існуючих списків."]},{"cell_type":"markdown","metadata":{"id":"cHXmVuwqBbz7"},"source":["#### Приєднання елементів до кінця списку"]},{"cell_type":"markdown","metadata":{"id":"OMfZrD_BBbz8"},"source":["Найпростіший спосіб додавання нових елементів до списку — приєднання елемента до списку."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"5_slNcvzBbz8","executionInfo":{"status":"ok","timestamp":1648533460298,"user_tz":-180,"elapsed":12,"user":{"displayName":"Иван Клопов","userId":"16257059839054245446"}},"outputId":"4188d623-f469-48c2-9a6a-36cc69f92ae6"},"outputs":[{"output_type":"stream","name":"stdout","text":["['honda', 'yamaha', 'suzuki']\n","['honda', 'yamaha', 'suzuki', 'ducati']\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","print(motorcycles)\n","motorcycles.append('ducati')\n","print(motorcycles)"]},{"cell_type":"markdown","metadata":{"id":"P1AAJxQPBbz8"},"source":["Метод **append()** спрощує динамічну побудову списків. Наприклад, ви можете почати з порожнього списку та додавати до нього елементи серією команд **append()**."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"KAjoiTzIBbz8","executionInfo":{"status":"ok","timestamp":1648533460299,"user_tz":-180,"elapsed":7,"user":{"displayName":"Иван Клопов","userId":"16257059839054245446"}},"outputId":"50a7a853-9370-45bf-fb91-25dcbb456690"},"outputs":[{"output_type":"stream","name":"stdout","text":["['honda', 'yamaha', 'suzuki']\n"]}],"source":["motorcycles = []\n","motorcycles.append('honda')\n","motorcycles.append('yamaha')\n","motorcycles.append('suzuki')\n","print(motorcycles)"]},{"cell_type":"markdown","metadata":{"id":"sSCYIpbVBbz8"},"source":["#### Вставлення елементів до списку"]},{"cell_type":"markdown","metadata":{"id":"rm1E1CPvBbz8"},"source":["Метод **insert()** дозволяє додати новий елемент довільної позиції списку. Для цього слід вказати індекс та значення нового елемента."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"nsfoSQ4QBbz8","outputId":"77b94178-5b7b-4fe5-84c1-eddb18fe658c","executionInfo":{"status":"ok","timestamp":1650434317419,"user_tz":-180,"elapsed":6,"user":{"displayName":"Иван Клопов","userId":"16257059839054245446"}},"colab":{"base_uri":"https://localhost:8080/"}},"outputs":[{"output_type":"stream","name":"stdout","text":["['ducati', 'honda', 'yamaha', 'suzuki']\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","motorcycles.insert(0, 'ducati')\n","print(motorcycles)"]},{"cell_type":"markdown","metadata":{"id":"Df4eLe-yBbz8"},"source":["### Видалення елементів зі списку"]},{"cell_type":"markdown","metadata":{"id":"nEpriI7xBbz8"},"source":["#### Видалення елемента за допомогою команди del"]},{"cell_type":"markdown","metadata":{"id":"PBueABLcBbz8"},"source":["Якщо вам відома позиція елемента, який має бути вилучений зі списку, скористайтесь командою **del**."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"kmSzD3cmBbz8","outputId":"35ce455d-6d9b-4123-91e3-8d10a1de5c23","executionInfo":{"status":"ok","timestamp":1677144068862,"user_tz":-120,"elapsed":231,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"colab":{"base_uri":"https://localhost:8080/"}},"outputs":[{"output_type":"stream","name":"stdout","text":["['honda', 'yamaha', 'suzuki']\n","['yamaha', 'suzuki']\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","print(motorcycles)\n","del motorcycles[0]\n","print(motorcycles)"]},{"cell_type":"markdown","metadata":{"id":"C_EsrEewBbz8"},"source":["Команда del дозволяє видалити елемент із будь-якої позиції списку, якщо вам відомий його індекс. Наприклад, ось як зі списку видаляється другий елемент 'yamaha':"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"V5RHNlrPBbz9","outputId":"c637c9ec-6e2b-4ff7-c84e-3a4927b98ad1","executionInfo":{"status":"ok","timestamp":1677144068862,"user_tz":-120,"elapsed":5,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"colab":{"base_uri":"https://localhost:8080/"}},"outputs":[{"output_type":"stream","name":"stdout","text":["['honda', 'yamaha', 'suzuki']\n","['honda', 'suzuki']\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","print(motorcycles)\n","del motorcycles[1]\n","print(motorcycles)"]},{"cell_type":"markdown","metadata":{"id":"1IeuOe4RBbz9"},"source":["#### Видалення елемента з використанням методу pop()"]},{"cell_type":"markdown","metadata":{"id":"a8IsrRukBbz9"},"source":["Іноді значення, яке видаляється зі списку, має бути використане. Припустимо, ви хочете отримати координати *x* і *y* щойно збитого корабля прибульців, щоб зобразити вибух у цій позиції. У веб-застосунку користувач, віддалений зі списку активних учасників, може бути доданий до списку неактивних і т.д. Метод __pop()__ видаляє останній елемент зі списку, але дозволяє працювати з ним після видалення. Видалимо мотоцикл зі списку:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"y8Ez0pmsBbz9","outputId":"ea381f8c-beba-4e7f-e57d-ae4852baf66d","executionInfo":{"status":"ok","timestamp":1677144068863,"user_tz":-120,"elapsed":4,"user":{"displayName":"Іван Клопов","userId":"16257059839054245446"}},"colab":{"base_uri":"https://localhost:8080/"}},"outputs":[{"output_type":"stream","name":"stdout","text":["['honda', 'yamaha', 'suzuki']\n","['honda', 'yamaha']\n","suzuki\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","print(motorcycles)\n","popped_motorcycle = motorcycles.pop()\n","print(motorcycles)\n","print(popped_motorcycle)"]},{"cell_type":"markdown","metadata":{"id":"N2igYWU1Bbz9"},"source":["### Вилучення елементів з довільної позиції списку"]},{"cell_type":"markdown","metadata":{"id":"Zx-fi2CSBbz9"},"source":["Виклик **pop()** може використовуватися для видалення елемента у довільній позиції списку; для цього слід вказати індекс елемента, що видаляється в круглих дужках."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"pCJVPNNIBbz9","executionInfo":{"status":"ok","timestamp":1644906350407,"user_tz":-120,"elapsed":221,"user":{"displayName":"Иван Клопов","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GiH84bez6-hFMevj6ys7ooC_PbtxnxjtMInU94r6w=s64","userId":"16257059839054245446"}},"outputId":"030ff6ba-79ca-4048-cab3-e303cfadf527"},"outputs":[{"output_type":"stream","name":"stdout","text":["The first motorcycle I owned was a Honda.\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","first_owned = motorcycles.pop(0)\n","print('The first motorcycle I owned was a ' + first_owned.title() +'.')"]},{"cell_type":"markdown","metadata":{"id":"llMn4AH3Bbz9"},"source":["Пам'ятайте, що після кожного дзвінка **pop()** елемент, з яким ви працюєте, вже не знаходиться у списку.\n","Якщо ви не впевнені в тому, який із двох способів вибрати - команду **del** або метод **pop()** , то просте правило допоможе вам визначитися. Якщо ви збираєтеся просто видалити елемент зі списку, не використовуючи його, вибирайте команду del; якщо ви маєте намір використовувати елемент після видалення зі списку, вибирайте метод pop()."]},{"cell_type":"markdown","metadata":{"id":"RQiFu8FkBbz9"},"source":["### Видалення елементів за значенням"]},{"cell_type":"markdown","metadata":{"id":"H36HZgZ4Bbz9"},"source":["Іноді позиція елемента, що видаляється, невідома. Якщо знаєте лише значення елемента, використовуйте метод **remove()**."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"d8KadwGPBbz9","outputId":"a59cddba-3c9a-4af0-b276-cb7bba8c3c5d"},"outputs":[{"name":"stdout","output_type":"stream","text":["['honda', 'yamaha', 'suzuki', 'ducati']\n","['honda', 'yamaha', 'suzuki']\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']\n","print(motorcycles)\n","motorcycles.remove('ducati')\n","print(motorcycles)"]},{"cell_type":"markdown","metadata":{"id":"7GOfGIDhBbz9"},"source":["Метод *remove()* також може використовуватися для роботи зі значенням, яке видаляється зі списку. Наступна програма видаляє значення 'ducati' та виводить причину видалення:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"QulsbxhABbz9","outputId":"6597bd80-5e0c-4f74-e895-6f1f695aa12b"},"outputs":[{"name":"stdout","output_type":"stream","text":["['honda', 'yamaha', 'suzuki', 'ducati']\n","['honda', 'yamaha', 'suzuki']\n","\n","A Ducati is too expensive for me.\n"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']\n","print(motorcycles)\n","too_expensive = 'ducati'\n","motorcycles.remove(too_expensive)\n","print(motorcycles)\n","print(\"\\nA \" + too_expensive.title() + \" is too expensive for me.\")"]},{"cell_type":"markdown","metadata":{"id":"5Ov2RqNOBbz9"},"source":["**ПРИМІТКА**\n","Метод remove() видаляє лише перше входження заданого значення Якщо існує ймовірність того, що значення зустрічається у списку більше одного разу, використовуйте цикл для визначення того, чи видалені всі входження даного значення."]},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 4\n","Список гостей: якби ви могли запросити будь-кого (з живих чи померлих) на обід, то кого б ви запросили? Створіть список, що включає щонайменше трьох людей, яких вам хотілося б запросити на обід. Потім використовуйте цей список для виведення запрошення кожному учаснику."],"metadata":{"id":"6s2B7O4bGEBY"}},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 5\n","Зміна списку гостей: ви тільки що дізналися, що один із гостей прийти не зможе, тому вам доведеться надіслати нові запрошення. Відсутнього гостя треба замінити на когось іншого.\n","* Почніть із програми із завдання 2-4. Додайте до кінця програми команду print для виведення імені гостя, який прийти не зможе.\n","* Змініть список та замініть ім'я гостя, який прийти не зможе, на ім'я нового запрошеного.\n","* Виведіть новий набір повідомлень із запрошеннями – по одному для кожного учасника, що входить до списку."],"metadata":{"id":"zqT6y7qlHDOe"}},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 6\n","Більше гостей: ви вирішили купити обідній стіл більшого розміру. Додаткові місця дають змогу запросити на обід ще трьох гостей.\n","* Почніть із програми із завдань 2-4 або 2-5. Додайте в кінець програми команду print, яка виводить повідомлення про розширення списку гостей.\n","список. список. список.\n","* Додати виклик insert() для додавання одного гостя на початок \n","* Додати виклик insert() для додавання одного гостя в середину \n","* Додайте виклик append() для додавання одного гостя в кінець\n","* Виведіть новий набір повідомлень із запрошеннями – по одному для кожного учасника, що входить до списку."],"metadata":{"id":"dQCHw7N9HPsZ"}},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 7\n","Скорочення списку гостей: щойно з'ясувалося, що новий обідній стіл привезти вчасно не встигнуть і місця вистачить лише двом гостям.\n","\n","* Почніть із програми із завдання 2-6. Додайте команду для виведення повідомлення про те, що на обід запрошуються лише два гості.\n","* Використовуйте метод pop() для послідовного видалення гостей зі списку доти, доки у списку не залишаться лише двоє людей. Щоразу, коли зі списку видаляється чергове ім'я, виведіть для цієї людини повідомлення про те, що ви шкодуєте про скасування запрошення.\n","* Виведіть повідомлення для кожної з двох осіб, які залишаються у списку. Повідомлення має підтверджувати, що раннє запрошення залишається чинним.\n","* Використовуйте команду del для видалення двох останніх імен, щоб список залишився порожнім. Виведіть список, щоб переконатися, що наприкінці роботи програми список не містить жодного елемента.\n","\n","\n","\n","\n","\n","\n","\n","\n"],"metadata":{"id":"AVMm1MGaZyKU"}},{"cell_type":"markdown","metadata":{"id":"IUgrBtzZBbz9"},"source":["### Упорядкування списку"]},{"cell_type":"markdown","metadata":{"id":"DZ02uZMgBbz-"},"source":["Нерідко список створюється у непередбачуваному порядку, тому що порядок отримання даних від користувача не завжди знаходиться під вашим контролем. І хоча у багатьох випадках такий стан справ неминучий, часто потрібно вивести інформацію у порядку. Водних випадках потрібно зберегти вихідний порядок елементів у списку, в інших вихідний порядок має бути змінено. Python надає у розпорядження програміста кілька різних способів упорядкування списку залежно від ситуації."]},{"cell_type":"markdown","metadata":{"id":"44Mm_YGCBbz-"},"source":["#### Постійне сортування списку методом sort()"]},{"cell_type":"markdown","metadata":{"id":"zWQe-SS1Bbz-"},"source":["Метод **sort()** дозволяє відносно легко відсортувати список. Припустимо, є список машин, і ви хочете перевпорядкувати ці елементи за абеткою.\n","Щоб спростити завдання, припустимо, що всі значення у списку складаються із символів нижнього регістру."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"FrfDnJf3Bbz-","outputId":"79b4b82f-be07-439e-d24f-89a7a008731e"},"outputs":[{"name":"stdout","output_type":"stream","text":["['audi', 'bmw', 'subaru', 'toyota']\n"]}],"source":["cars = ['bmw', 'audi', 'toyota', 'subaru']\n","cars.sort()\n","print(cars)"]},{"cell_type":"markdown","metadata":{"id":"m5uLsNcqBbz-"},"source":["Список також можна відсортувати у зворотному алфавітному порядку; для цього методу * sort () * слід передати аргумент reverse = True. У наступному прикладі список сортується у порядку, зворотному алфавітному:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"haGXTaeUBbz-","outputId":"89fdd804-843b-41e8-825e-dfac8522bb26"},"outputs":[{"name":"stdout","output_type":"stream","text":["['toyota', 'subaru', 'bmw', 'audi']\n"]}],"source":["cars = ['bmw', 'audi', 'toyota', 'subaru']\n","cars.sort(reverse=True)\n","print(cars)"]},{"cell_type":"markdown","metadata":{"id":"qq1pM8SpBbz-"},"source":["#### Тимчасове сортування списку функцією sorted()"]},{"cell_type":"markdown","metadata":{"id":"IvgUZI21Bbz-"},"source":["Щоб зберегти початковий порядок елементів списку, але тимчасово представити їх у відсортованому порядку, можна скористатися функцією **sorted()**. Функція sorted()дозволяє представити список у певному порядку, але не змінює фактичного порядку елементів у списку."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"WwFiPH8ZBbz-","outputId":"a5ed0afd-ceed-420f-c1f2-f6d8302cef2d"},"outputs":[{"name":"stdout","output_type":"stream","text":["Here is the original list:\n","['toyota', 'subaru', 'bmw', 'audi']\n","\n","Here is the sorted list:\n","['audi', 'bmw', 'subaru', 'toyota']\n","\n","Here is the original list again:\n","['toyota', 'subaru', 'bmw', 'audi']\n"]}],"source":["ars = ['bmw', 'audi', 'toyota', 'subaru']\n","print(\"Here is the original list:\")\n","print(cars)\n","print(\"\\nHere is the sorted list:\")\n","print(sorted(cars))\n","print(\"\\nHere is the original list again:\")\n","print(cars)"]},{"cell_type":"markdown","metadata":{"id":"lhvDk6dGBbz-"},"source":["#### Виведення списку у зворотному порядку"]},{"cell_type":"markdown","metadata":{"id":"ZJZtrZULBbz-"},"source":["Щоб переставити елементи списку у зворотному порядку, використовуйте метод reverse(). Скажімо, якщо список машин спочатку зберігався у хронологічному порядку дати придбання, елементи можна легко переупорядкувати у зворотному хронологічному порядку:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"6HgSa5fmBbz-","outputId":"05bc5fc8-cdef-4e4b-d4f8-ca5976547b91"},"outputs":[{"name":"stdout","output_type":"stream","text":["['bmw', 'audi', 'toyota', 'subaru']\n","['subaru', 'toyota', 'audi', 'bmw']\n"]}],"source":["cars = ['bmw', 'audi', 'toyota', 'subaru']\n","print(cars)\n","cars.reverse()\n","print(cars)"]},{"cell_type":"markdown","metadata":{"id":"-LYXKSMGBbz-"},"source":["### Визначення довжини списку"]},{"cell_type":"markdown","metadata":{"id":"QkmnMSGxBbz-"},"source":["Ви можете швидко визначити довжину списку за допомогою функції len()."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"qiJpctfKBbz-","outputId":"8413886a-b39e-432a-fbcb-cff4f355c872"},"outputs":[{"data":{"text/plain":["4"]},"execution_count":28,"metadata":{},"output_type":"execute_result"}],"source":["cars = ['bmw', 'audi', 'toyota', 'subaru']\n","len(cars)"]},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 8\n","Побачити світ: згадайте хоча б п'ять країн, де вам хотілося б побувати.\n","\n","* Збережіть назви країн у списку. Простежте, щоб список не зберігався в алфавітному порядку.\n","* Виведіть список у початковому порядку. Не переймайтеся оформленням списку, просто виведіть його як звичайний список Python.\n","* Використовуйте функцію sorted() для виведення списку за абеткою без зміни списку.\n","* Знову виведіть список, щоб показати, що він зберігається у початковому порядку.\n","* Використовуйте функцію sorted() для виведення списку у зворотному алфавітному порядку без зміни порядку вихідного списку.\n","* Знову виведіть список, щоб відобразити, що вихідний порядок не змінився.\n","* Змініть порядок елементів викликом reverse(). Виведіть список, щоб показати, що елементи йдуть в іншому порядку.\n","* Змініть порядок елементів повторним викликом reverse(). Виведіть список, щоб показати, що список повернувся до початкового порядку. \n","* Відсортуйте список за абеткою викликом sort().\n","Виведіть список, щоб показати, що елементи йдуть в іншому порядку.\n","* Викличте sort() для перестановки елементів списку у зворотному алфавітному порядку. Виведіть список, щоб показати, що порядок елементів змінився."],"metadata":{"id":"5K3ctKVjdY5l"}},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 9\n","Кількість гостей: в одній із програм із завдання з 2-4 до 2-7 використовуйте len() для виведення повідомлення з кількістю людей, запрошених на обід."],"metadata":{"id":"bcAKjUkFd14g"}},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 10\n","Усі функції: придумайте інформацію, яку можна зберігати у списку. Наприклад, створіть список гір, річок, країн, міст, мов... словом чого завгодно. Напишіть програму, яка створює список елементів, а потім викликає кожну функцію, згадувану в цій темі хоча б один раз."],"metadata":{"id":"TwiAcw4J208m"}},{"cell_type":"markdown","metadata":{"id":"MTb0d2OqBbz-"},"source":["### Помилки індексування під час роботи зі списками"]},{"cell_type":"markdown","metadata":{"id":"RWuTPvBoBbz-"},"source":["Коли програміст тільки починає працювати зі списками, він часто припускає одну характерну помилку."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"rljTlJg3Bbz-","outputId":"bcaed1b7-e546-4b91-c8fa-990ca3b1c43f"},"outputs":[{"ename":"IndexError","evalue":"list index out of range","output_type":"error","traceback":["\u001b[1;31m---------------------------------------------------------------------------\u001b[0m","\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)","\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mmotorcycles\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;34m'honda'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'yamaha'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'suzuki'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmotorcycles\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[1;31mIndexError\u001b[0m: list index out of range"]}],"source":["motorcycles = ['honda', 'yamaha', 'suzuki']\n","print(motorcycles[3])"]},{"cell_type":"markdown","metadata":{"id":"rAi6A1DoBbz-"},"source":["Python намагається повернути елемент синдексом 3. Однак при пошуку за списком жоден елемент motorcycles не володіє індексом 3. Через зміщення індексів на 1 ця помилка дуже поширена. Люди думають, що третім елементом є елемент із індексом 3, тому що вони починають відлік з 1. Але для Python третім є елемент синдексом 2, тому що індексування починається з 0."]},{"cell_type":"markdown","source":["⚡ ⚡ ⚡\n","### Challenge 11\n","Помилка помилка: якщо в жодній з попередніх програм ви ще не стикалися з помилками індексування, спробуйте створити таку помилку штучно. Змініть індекс в одній із програм, щоб викликати помилку індексування. Не забудьте виправити помилку перед тим, як закрити програму."],"metadata":{"id":"RzoGr_i93MEC"}},{"cell_type":"code","execution_count":null,"metadata":{"id":"paIZzHtZBbz_"},"outputs":[],"source":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.5"},"colab":{"provenance":[],"toc_visible":true}},"nbformat":4,"nbformat_minor":0}