Вступ

Ваш мозок ще далі болить від попереднього уроку? 🙂 Без проблем, я спеціально постарався, щоб під час цього уроку ми з вами трошки відпочили. Ми повертаємося до простої теми – змінні – але копнемо трошки глибше.

Давайте задумаємось… Змінні зберігають якусь невелику частинку інформації. Вони можуть повернути її нам у будь-який час, також ми можемо змінити цю інформацію (значення змінної) у будь-який час. Змінні – це чудовий інструмент, щоб зберігати певну інформацію і змінювати її по ходу нашої програми.

Але що, якщо нам потрібно зберегти наприклад цілий довгий список різноманітних “кусочків інформації”? Наприклад: імена місяців року. Або довгий список стрічок, який нам треба з часом змінювати? Наприклад: імена всіх собак чи котів у вашій сім’ї протягом останніх 20-ти років (у мене вони часто змінювалися у дитинстві). Або наприклад – телефонний довідник з усіма його номерами… Для цього нам треба буде мати список усіх імен, а також прив’язаний номер телефону до кожного з імен. Як же ж нам цього досягнути у нашій програмі на мові Python?

Рішення – Кортежі, Списки та Словники

Для вище згаданих трьох випадків, Пітон використовує 3 різні підходи – Кортежі, Списки та Словники. Давайте коротенько пройдемося по кожному з них:

  • Списки – це послідовність певних значень. Кожен елемент у списку є пронумерований і нумерація їхня починається з нуля – тобто перший елемент в списку має номер 0, другий – 1, і т.д. Ми можемо видаляти елементи зі списку, також додавати нові елементи.
  • Кортежі – в основному подібні до списків, але ми не можемо їх змінювати. Послідовність значень, які ми надаємо кортежу в момент його початкового визначення, не може бути змінено пізніше у програмі. Нумерація елементів в кортежі є такою ж самою як і в списку.
  • Словники – можна сказати, що це “розумний список”, який є невпорядкованим, та елементи якого проіндексовані визначеними нами індексами – ключами. А не так як це є в списку: 0, 1, 2, і т.д. Тобто у словниках у нас є чітко виражене поняття індекса, або ще можемо його називати ключем (також словом), кожному з яких відповідає певне встановлене значення – визначення. Таким чином в Словнику ми маємо справу з парами: слово – визначення. Визначення (значення словника) не є окремо пронумеровані, і не мають наперед визначеного порядку. Ми також можемо на ходу змінювати пари у словнику. Приклад словника – телефонна книга, де кожному імені (слову) відповідає номер телефону (визначення).

А тепер давайте пройдемось по кожному з наших складних типів даних окремо і з прикладами. Голова не кипить?

Кортежі

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

Зауважте, перед переходом на наступний рядок в послідовності елементів кортежу після стрічки ‘Friday’ я пропустив знак переводу на новий рядок ‘\’. Це не обов’язково, якщо код огорнутий круглими дужками.

Python інтерпретатор тоді організовує наш кортеж собі у вигляді індекса (таблиці), де кожен елемент кортежа доступний під певним номером – позицією в послідовності:

В наступному параграфі ми розберемо як доступатися до елементів послідовності на прикладі роботи зі списком.

Списки

Списки є дуже подібні до кортежів у плані роботи з ними. Єдині дві відмінності:

  • визначаємо їх не круглими, а квадтратними дужками
  • їх можемо змінювати в процесі програми

Відповідно напрошується питання, а для чого ж нам тоді Кортежі? В основному для двох речей:

  • для підвищення швидкодії програми, якщо не потрібно змінювати послідовність – тоді краще використовувати кортеж, незмінні типи даних завжди ресурсо економніші
  • якщо потрібна константа (незмінюваний список), щоб уникнути випадкових змін (наприклад як передача в ролі аргумента функції) – також краще використовувати Кортеж

Отже визначимо наш перший список:

Маємо послідовність 6-ти стрічок – кольорів в квадтратних дужках, а значить ми визначили саме список, а не кортеж. Тепер давайте спробуємо видрукувати на екран колір червоний (‘red’):

Хто знає, чому саме 3?

Так, адже починаємо нумерацію з нуля, ‘red’ маємо на позиції четвертій, відповідно індекс його буде – 3.

Також ми можемо взяти підмножину нашого списку кольорів, наприклад з першого по третій. Для цього потрібно скористатися двокрапкою (“:”) :

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

Виглядає трохи дивно? Давайте розберемось… Після імені змінної списку (colors) ми бачимо крапочку (“.”). В подальших уроках ми з вами побачимо таких крапочок більше. А поки у двох словах – ми викликали метод (функцію) списку ‘append’, який додає переданий йому аргумент (у нашому випадку це стрічка ‘grey’) до кінця списку. Не повністю зрозуміло? Не хвилюйтесь, у наступних уроках (зокрема Об’єктно Орієнтоване Програмування в Пітоні), ми розглянемо це все в деталях. А поки рухаємося далі.

Після виклику ‘append’ наш список виглядатиме отак:

Бачимо ‘grey’ у кінці списку.

А тепер давайте спробуємо видалити колір ‘black’ з нашої послідовності кольорів. Тут запис буде також цікавий:

Пам’ятаємо, оскільки нумерація починається з 0, то і ‘black’ колір, який є третім у нашому списку – матиме індекс 2. ‘del’ функція (delete) видаляє емелент зі списку colors під індексом 2.

Є ще і інша можливість викинути елемент зі списку. Використовуючи функцію – ‘pop’:

Результат буде аналогічним – список colors без елементу ‘black’:

На цьому закінчуємо ознайомлення зі списками і рухаємось далі – Словники:

Словники

Тепер давайте уявимо, що нам треба створити телефонну книгу. Як вона працює? Ми знаємо ім’я людини, але не знаємо її домашнього номера телефону. У цьому випадку телефонна книга може допомогти (звичайно, якщо людина живе по місцю прописки ;). В цій книзі ми знаходимо людину з даним ім’ям (або адресою) і навпроти даного ім’я будемо мали її домашній номер телефону. Тобто в даній книзі маємо набір пар: ім’я – телефон.

Можемо з цього визначення зрозуміти, що списки чи кортежі нам тут не допоможуть, адже там ключем (індексом) є число. А нам треба щось таке, що має ключами наприклад стрічку – ім’я людини…

Ось тут нам і приходять Пітонівські Словники на допомогу! Словник складається з ключів та значень. В нашій книзі Імена будуть в ролі Ключів, а Номери Телефонів – в ролі Значень словника.

Списки огортаються квадратними дужками, кортежі – круглими, а тепер вгадайте чим огортаються словники? Так – фігурними 🙂

Давайте вже нарешті до прикладу. Визначаємо нашу телефонну книгу – словник:

В даному прикладі ми визначили словник під назвою book, який складається з трьох пар (ключ-значення). Бачимо, що ключ словника є у нашому випадку стрічкою – ім’ям, а значенням словника, яке йде після ключа і двокрапки, є число – номер телефону (телефони видумані ;). Ось такий простий синтаксис словника.

А тепер давайте додамо ще одну людину в нашу книгу:

Ми щойно додали новий ключ ‘Andriy Ivachevskyy’ в наш словник, а ключ має значення – 80678765432. Тепер маємо книгу, в якій чотири людини:

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

Ми щойно встановили номер Андрію (‘Andriy Ivachevskyy’) в 0, цей ключ у нас уже існував.

Тобто, якщо ключу в словнику присвоїти значення, тоді цей ключ або змінить своє значення у випадку якщо ключ вже існує в словнику, або словник отримає нову пару (ключ-словник), у випадку якщо ключ до цього в словнику не існував.

Додати і змінити значення в словнику вміємо. Тепер ще давайте з вами видалимо пару зі словника. Тут скористаємося тим же ж синтаксисом і оператором, який ми використовували при видалені елементу зі списку ‘del’:

Бачимо зверху, що словник поменшав – значення ‘Andriy Ivachevskyy’ не стало.

І наприкінці розгляду Python словників пропоную вашій увазі невеличку програму, з вкладеними у неї пояснювальними коментарями. В ній наведу приклади використання додаткових функцій роботи зі словниками. Читайте, вникайте, викопійовуйте в свій редактор і запускайте, експериментуйте. Якщо щось не співпадає або не працює – сваріть мене в коментарях – будем розбирались 😉

І на завершення…

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

Ви молодці, що дійшли до цього моменту! Якщо виникли питання, чи знайшли неточності – коментуйте будь-ласка нижче.

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

Сподобалося? Було Корисним? Тоді прошу лайкати і ретвітити, передавати своїм друзям, що також можливо хочуть навчитися основ програмування.