Типы данных в Python
В этом руководстве вы познакомитесь с различными типами данных в Python и научитесь их грамотно применять.
Типы данных
Каждая переменная в Python — объект с определенным типом данных. Тип данных — это класс, а переменные являются экземплярами (объектами) этих классов.
В Python множество различных типов данных, мы поговорим о самых важных из них.
Числа
К этому классу относятся: целые, комплексные и числа с плавающей точкой. Определены они в Python так: int
, complex
и float
соответственно.
С помощью функции type()
можно узнать класс, к которому принадлежит переменная. А функция isinstance()
проверяет принадлежность объекта к определенному классу.
a = 5
print(a, "относится к типу", type(a))
a = 2.0
print(a, "относится к типу", type(a))
a = 1+2j
print(a, "комплексное число?", isinstance(1+2j,complex))
Вывод:
5 относится к типу <class 'int'>
2.0 относится к типу <class 'float'>
(1+2j) комплексное число? True
Целые числа могут быть любой длины — ограничивает их лишь память вашего компьютера.
Число с плавающей точкой имеет точность до 15 знаков после запятой. Целая и десятичная части разделяются точками. 1 — целое число, 1.0 — число с плавающей точкой.
Комплексные числа записываются так: x + yj
. Здесь x
— действительная часть, а y
— мнимая. Несколько примеров:
>>> a = 1234567890123456789
>>> a
1234567890123456789
>>> b = 0.1234567890123456789
>>> b
0.12345678901234568
>>> c = 1+2j
>>> c
(1+2j)
Обратите внимание, что float-переменная b
усекается.
Списки
Список — это упорядоченная последовательность элементов. Это наиболее часто используемый тип данных в Python. И это не просто так: список — очень гибкий тип данных. Хотя бы потому, что элементы списка не обязательно должно быть одного типа.
Объявить список довольно просто — элементы в нем разделяются запятыми и заключены в квадратные скобки [ ]
.
a = [1, 2.2, 'python']
Чтобы получить элемент или ряд элементов из списка, воспользуйтесь срезами. Индексация начинается с 0.
a = [5,10,15,20,25,30,35,40]
# a[2] = 15
print("a[2] = ", a[2])
# a[0:3] = [5, 10, 15]
print("a[0:3] = ", a[0:3])
# a[5:] = [30, 35, 40]
print("a[5:] = ", a[5:])
Вывод:
a[2] = 15
a[0:3] = [5, 10, 15]
a[5:] = [30, 35, 40]
Списки изменяемы. Это значит, что вы можете изменить значение элемента списка.
a = [1, 2, 3]
a[2] = 4
print(a)
Вывод:
[1, 2, 4]
Кортежи
Кортеж — это упорядоченная последовательность элементов, похожая на список. Единственное отличие — кортежи неизменяемы. После их объявления вы не сможете изменить значения внутри кортежа.
Кортежи гарантируют, что данные в нем не будут изменяться. Благодаря этому кортежи быстрее списков.
Объявляются кортежи с помощью круглых скобок — ()
, а его элементы разделяются запятыми.
t = (5, 'программа', 1+3j)
Чтобы извлечь элемент из кортежа, вы можете использовать оператор среза — []
. Но не забывайте — значения кортежа менять нельзя.
t = (5,'программа', 1+3j)
# t[1] = 'программа'
print("t[1] = ", t[1])
# t[0:3] = (5, 'программа', (1+3j))
print("t[0:3] = ", t[0:3])
# Появляется ошибка
# Кортежи неизменяемы
t[0] = 10
Вывод:
t[1] = программа
t[0:3] = (5, 'программа', (1+3j))
Traceback (most recent call last):
File "test.py", line 11, in <module>
t[0] = 10
TypeError: 'tuple' object does not support item assignment
Строки
Строка — последовательность символов Юникода. Для объявления строк можно использовать двойные или одинарные кавычки. Многострочные блоки текста объявляются так — '''
или """
.
s = "Это строка"
print(s)
s = '''Многострочная
строка'''
print(s)
Вывод:
Это строка
Многострочная
строка
Со строками можно использовать срезы, но сами строки изменять нельзя.
s = 'Привет, мир!'
# s[4] = 'е'
print("s[4] =", s[4])
# s[8:11] = 'мир'
print("s[8:11] =", s[8:11])
# Ошибка
# Строки неизменяемы
s[5] ='т'
Вывод:
s[4] = е
s[8:11] = мир!
Traceback (most recent call last):
File "<string>", line 11, in <module>
TypeError: 'str' object does not support item assignment
Множества
Множество — неупорядоченный набор уникальных элементов. Множество объявляется с помощью фигурных скобок — { }
. Элементы внутри множества разделяются запятыми. Элементы в списке не упорядочены.
a = {5,2,3,1,4}
# вывод элемента множества
print("a = ", a)
# тип данных переменной а
print(type(a))
Вывод:
a = {1, 2, 3, 4, 5}
<class 'set'>
Множества можно объединять и пересекать. Также в множествах удаляются все дубликаты — все элементы в них уникальны.
a = {1, 2, 2, 3, 3, 3}
print(a)
Вывод:
{1, 2, 3}
Множества не упорядочены. Оператор среза с ними не работает.
>>> a = {1, 2, 3}
>>> a[1]
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
TypeError: 'set' object does not support indexing
Словари
Словарь — это неупорядоченный набор пар «ключ-значение».
Обычно словарь используется при работе с большим количеством данных. Словари оптимизированы под извлечение данных. Мы должны знать ключ, чтобы извлечь значение.
В Python словари объявляются с помощью фигурных скобок — { }
. Каждый элемент словаря представляет собой пару в виде ключ:значение
. Ключ и значение могут быть любого типа.
>>> d = {1:'значение', 'ключ':2}
>>> type(d)
<class 'dict'>
Для получения значения мы используем ключ — не наоборот.
d = {1:'значение', 'ключ':2}
print(type(d))
print("d[1] = ", d[1]);
print("d['ключ'] = ", d['ключ']);
# Ошибка
print("d[2] = ", d[2]);
Вывод:
<class 'dict'>
d[1] = value
d['ключ'] = 2
Traceback (most recent call last):
File "<string>", line 9, in <module>
KeyError: 2
Приведение типов
Для преобразования значений переменных можно использовать следующие функции: int()
, float()
, str()
и т. д.
>>> float(5)
5.0
Приведение float
к int
приведет к усечению — десятичная часть отбросится.
>>> int(10.6)
10
>>> int(-10.6)
-10
Преобразовывать можно только подходящие под тип данных значения.
>>> float('2.5')
2.5
>>> str(25)
'25'
>>> int('1p')
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1p'
Также можно преобразовывать одну последовательность в другую.
>>> set([1,2,3])
{1, 2, 3}
>>> tuple({5,6,7})
(5, 6, 7)
>>> list('привет')
['п', 'р', 'и', 'в', 'е', 'т']
Для преобразования в словарь каждый элемент должен получить свою пару:
>>> dict([[1,2], [3,4]])
{1: 2, 3: 4}
>>> dict([(3,26), (4,44)])
{3: 26, 4: 44}