Типи даних та їх використання
Основним елементом програмування є робота з даними. Ми зберігаємо дані у змінних і структурах даних. Для цього ми маємо різні типи даних у Python, і кожен із них має своє специфічне використання. Тема огляд типів даних присвячена базовій нотації та позначенню у Python.
Ми можемо зосередитися на найбільш використовуваних типах даних:
- Числові типи (int, float) розглядаються в основній темі змінні та числові вирази.
- Логічний тип (bool) тісно пов’язаний із темою логічних виразів.
- Рядки — це послідовності символів, які порівняно з числами додають принцип індексації.
- Списки є більш загальними, ніж рядки, оскільки вони динамічно змінюються та можуть містити елементи різних типів.
- Словники дозволяють індексувати не лише числами, а й рядками.
Більш загальна тема об’єкти пов’язана з типами даних, які у свою чергу належать до більш просунутих тем, а тут ми охоплюємо лише основи.
ВгоруОгляд типів даних
Огляд типів
Основні типи даних у Python:
| Тип | Опис | Приклади значень |
|---|---|---|
int |
цілі числа | 1, 42, -5, 200 |
float |
дійсні числа (точніше, числа з рухомою комою, де Python використовує десяткову крапку, а не кому) | 2.5, 3.25, -12.37832 |
bool |
значення істинності | True, False |
str |
рядки | "порося", "пес" |
list |
списки, які є впорядкованими наборами значень | [1, 3, 8, 2], ["коза", "вівця", "кенгуру"] |
dict |
словники, які є невпорядкованими парами ключ-значення (словник відображає ключі на значення) | {"a": 5, "b": 10} |
Python також пропонує інші типи, наприклад, complex' (комплексні числа),tuple’ (сутність, незмінна послідовність), `set’ (набір).
Мінливість і незмінність
Ми розрізняємо типи залежно від того, чи можемо ми змінити їхні значення:
- мінливі (mutable) типи даних це
list, set, dict; - незмінні (immutable) типи даних це
int, float, bool, str, tuple.
Ця відмінність важлива, наприклад, при використанні словників – словники можна індексувати лише незмінними типами.
Приведення типів
Назви типів також є назвами вбудованих функцій, які виконуватимуть приведення. Типи змінних дуже важливі. Наприклад, вони впливають на значення операторів. Типовим прикладом є приведення числа до рядка:
x = 15
print(x) # напише 15
print(3*x) # напише 45
x = str(x) # приведення до рядка, x тепер містить "15"
print(x) # напише 15 (у цьому випадку не видно різниці)
print(3*x) # напише 151515 (тому що x – це тепер рядок, а операція * для рядків
# значить повторюваний запис до рядку)Рядок в Python
Написання рядків
Рядки пишемо в лапках або апострофах. У Python 3 рядки також можуть містити символи з діакритикою.
a = "Це рядок"
b = 'Це також рядок'
print(a, b)Індексація
Ми отримуємо доступ до окремих символів рядка за допомогою індексації з використанням квадратних дужок. Увага: індексуємо з нуля. Python (на відміну від більшості інших мов програмування) дозволяє індексувати навіть з кінця за допомогою від’ємних чисел.
text = "порося"
text[0] # перша літера => 'п'
text[1] # друга літера => 'о'
text[6] # шоста, остання літера => 'я'
text[-1] # остання літера => 'я'
text[-2] # передостання літера => 'с'Ми можемо використовувати двокрапку для індексування підрядка.
text = "панорама"
print(text[2:7]) # від другої до сьомої позиції => нора
print(text[:3]) # перші 3 символи => пан
print(text[-4:]) # останні 4 знаки => рамаБільш просунутим елементом є використання двох двокрапок, де третє значення вказує на довжину стрибка:
text = "Бігає-лисиця-по-полю"
print(text[5:15:2]) # з 5-ї по 14-ту позиції кожні 2 => -иияп
print(text[::3]) # від початку до кінця, кожні 3 => Бали--л
print(text[::-1]) # задом наперед =>юлоп-оп-яцисил-єагіБІтерація за рядком
Ми можемо легко переглядати окремі символи рядка за допомогою циклу for.
text = "соловій"
for letter in text:
print("літера:", letter)Незмінність рядків
Рядки є незмінним типом даних у Python. Це одна з рис, якими він відрізняється від списків. Незмінність означає, що ми не можемо змінити підлітеру в символі. Нам потрібно створити новий рядок, у якому буде змінена відповідна літера.
text = "кілець"
text[2] = "н" # TypeError - рядок не дозволяє змінювати символи
text = text[:2]+"н"+text[3:] # ми створюємо новий, змінений рядок
print(text)Операції з рядками
Рядки можна додавати (= об’єднувати). Ми також можемо множити рядки на ціле число (= багаторазово об’єднувати). Інші корисні операції включають пошук довжини (len) або перевірку на наявність підрядка (in).
text = "петр"
text + "ключ" # => петрключ
3*text # => петрпетрпетр
len(text) # => 4
"е" in text # => TrueРядки — це об’єкти, які мають низку доступних корисних методів, які ми викликаємо за допомогою крапкової нотації. Прикладами є перетворення у верхній/нижній регістр (upper, lower), розділення рядка відповідно до вказаного символу (split) або заміна підрядка (replace):
text = "Житомир"
text.upper() # => ЖИТОМИР
text.lower() # => житомир
text.split("о") # => ['Жит', 'мир']
text.replace("том", "хет") # => ЖихетирЗауважте, що тут ми використовуємо так звану точкову нотацію: ми пишемо text.upper(), а не звичайний виклик функції у формі upper(text). Це пов’язано з тим, що рядки представлено як об’єкти.
Операції з символами
Під час роботи з рядками іноді корисними є операції для маніпулювання окремими символами, особливо функції ord і chr, які перетворюють символи в цілі числа і назад:
ord(c)повертає порядковий номер символуc,chr(i)повертає символ із порядковим номеромi.
«Послідовний номер» означає номер у кодуванні Unicode. Для базових завдань програмування достатньо знати, що в цьому кодуванні букви розташовані за алфавітом (на жаль, це стосується лише літер англійського алфавіту). Ось як ми можемо написати літери англійського алфавіту:
start = ord('A')
for i in range(26):
print(chr(start + i))Списки в Python
Список (list) — це впорядкована колекція значень будь-якого типу.
Створення списку
Списки записуються з використанням квадратних дужок:
s = [] # порожній список
s = [8, 3, 45] # список із трьох чиселМи також можемо створити список за допомогою ключового слова list.
s = list("порося") # створює список ['п', 'о', 'р', 'о', 'с', 'я']Індексація
Ми отримуємо доступ до окремих елементів списку за допомогою індексації з використанням квадратних дужок. Увага: індексуємо з нуля. Ми можемо індексувати назад за допомогою від’ємних чисел:
s = ["пес", "порося", "вівця", "коза"]
s[0] # перший елемент списку => "пес"
s[1] # другий елемент списку => "порося"
s[-1] # останній елемент списку => "коза"
s[-2] # передостанній елемент списку => "вівця"Ми можемо використовувати двокрапку, щоб індексувати частину списку:
numbers = [37, 99, 42, 7, 13, 1, 1000]
print(numbers[2:5]) # => [42, 7, 13]
print(numbers[:3]) # => [37, 99, 42]
print(numbers[-2:]) # => [1, 1000]Операції зі списками
Корисні функції зі списками:
s = [8, 3, 45]
a = len(s) # довжина списку
s.append(7) # додавання елемента до списку
s.sort() # упорядкування елементів у списку
t = sorted(s) # сортує елементи в s і призначає цей новий список t
# s не змінитьсяЗауважте, що тут ми використовуємо так звану точкову нотацію: ми пишемо s.sort(), а не звичайний виклик функції у формі sort(s). Це пов’язано з тим, що списки представлено як об’єкти.
Списки та цикл for
Використовуючи цикл for, ми можемо перебирати елементи списку:
s = [8, 3, 45]
for x in s:
print(x)Крім того, ми можемо прокрутити елементи списку таким чином (це позначення ближче до того, як ми перебираємо списки в інших мовах програмування):
for i in range(len(s)):
print(s[i])Словники в Python
Словник (dictionary, dict) визначає зіставлення ключів зі значеннями. Наприклад, ми можемо запам’ятати кількість фруктів на складі.
Створення словника
Ми створюємо словник на Python за допомогою дужок.
fruits = {"apple": 5,
"banana": 10,
"orange": 2}
empty_dictionary = {} # порожній словникДоступ до елементів
Ми отримуємо доступ до словникових статей за допомогою індексації з квадратними дужками. Так само ми можемо додати запис до словника.
print(fruits["apple"])
fruits["pear"] = 3Якщо ми спробуємо одержати доступ до елемента, якого немає у словнику, ми отримаємо помилку. Безпечний доступ здійснюється за допомогою get:
print(fruits["plum"]) # => KeyError: 'plum'
print(fruits.get("plum", 0)) # якщо елемента немає у словнику,
# повертає вказане значення (0)Робота зі словниками
Інші корисні функції для роботи зі словниками:
len(fruits) # кількість ключів у словнику
fruits.keys() # ключі у словнику, tj. 'pear', 'orange', 'banana', 'apple'
fruits.values() # значення у словнику, tj. 10, 2, 3, 5
"apple" in fruits # перевірка наявності у словникуОб’єкти в Python
Python, як і більшість інших сучасних мов програмування, підтримує об’єктно-орієнтоване програмування. Це вже досить просунута тема програмування. Тут ми підсумовуємо лише деякі основні поняття.
Об’єкт (object) – це набір даних (змінних) і методів (функцій), які працюють з цими даними. У Python майже всі дані, з якими ми стикаємося, є об’єктами (числа, рядки, списки тощо).
Об’єкти — це спеціальні екземпляри класів (class). Клас можна розуміти як загальний шаблон, згідно з яким створюються об’єкти.
Приклад визначення класу:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print("My name is ", self.name)
print("I am ", self.age, "years old")І ось як ми створюємо об’єкти (екземпляри класу) і використовуємо їх:
homer = Person("Homer Simpson", 39)
bart = Person("Bart Simpson", 10)
homer.introduce()
bart.introduce()У цьому прикладі:
Person— це клас,homerтаbart— це об’єкти,nameтаage— це атрибути даних,introduce()— це метод,__init__— це метод ініціалізації, який автоматично викликається під час створення об’єкта.