Python: уроки, справочник и задачи

Типы данных в Python 3

Раздел: Основы Python · Обновлено 31.10.2026

Тип данных определяет, что можно делать со значением: складывать, менять по индексу, использовать как ключ словаря. Здесь вы познакомитесь со всеми основными встроенными типами Python, научитесь извлекать элементы из коллекций и преобразовывать один тип в другой.

Материал актуален для Python 3.12 и 3.13. В добавленном разделе собрана сводная таблица, которая отвечает на главные практические вопросы: какой тип изменяемый, какой сохраняет порядок, что можно сделать ключом словаря. Там же разобраны типы bool и None и правильная проверка типа через isinstance().

Типы данных в Python 3
Содержание статьи
  1. Числа в Python
  2. Список в Python
  3. Кортежи в Python
  4. Строки в Python
  5. Множества в Python
  6. Словари в Python
  7. Преобразования типов данных в Python
  8. Сводная таблица встроенных типов
    1. bool и None
    2. Проверка типа через isinstance
    3. Точность float
  9. Частые вопросы
    1. Как узнать тип переменной в Python?
    2. Почему список нельзя сделать ключом словаря?
    3. Чем список отличается от кортежа на практике?
    4. Как преобразовать строку с запятой в число?
s = 10 print(s, "имеет тип данных", type(s)) q = 6.7 print(q, "имеет тип данных", type(q)) результат: 10 имеет тип данных <class 'int'> # Как видим, функция type() показывает нам к какому классу(типу данных), принадлежит значение нашей переменной 6.7 имеет тип данных <class 'float'>

Числа в Python

s = 10 
print(s, "имеет тип данных", type(s))
q = 6.7 
print(q, "имеет тип данных", type(q)) 
результат: 
10 имеет тип данных <class 'int'> # Как видим, функция type() показывает нам к какому классу(типу данных), принадлежит значение нашей переменной 
6.7 имеет тип данных <class 'float'>
Целочисленные значения (int) в Python могут иметь любую длину, она ограничивается только доступной памятью. А числа с плавающей запятой, имеют точность до 15 знаков, все что будет дальше, будет усечено при выводе. При работе с числовыми типами данных в Python, вы всегда может использоваться математические знаки, для сложения, вычитания, деления или умножения.

Список в Python

Список - это последовательность элементов. Одним из наиболее часто используемых типов данных является список. Тип данных "Список", уникален тем, что он может содержать различные типы данных. Пример работы со списками:

i = [1,2,43,67,42,"pydocs"] # Объявления списка, в квадратных скобках заключаем нужные нам данные, как видите, мы одновременно можем хранить в списках разные тиы данных

Из списка всегда можно извлечь нужный элемент,или целый диапазон элементов, для этого используется оператор [ ]. Индекс в Python, всегда начинается с 0.

i = [2,4,6,8,10,12,14,16,18,20] # Список
# Получаем например 4-ый элемент списка
print(i[4])
результат: 10

#а теперь попробуем получить диапазон элементов
print(i[0:4])
результат: [2,4,6,8]

Важно запомнить! Значение элементов списки могут меняться.

Кортежи в Python

Кортежи - это практически те же самые списки, с разницей в том, что данные в кортежах менять нельзя. Если списки мы определяли [ ],то кортежи определяются круглыми скобками ( ),и так же как и в списках элементы разделяются запятыми. Пример:

i = (10,"pydocs",26)

Как мы уже поняли, значения в кортеже менять нельзя, но извлекать данные, нам никто не запрещал. Данные извлекаются практически так же, как и в обычном списке. Попробуем извлечь данные, и так же попробуем изменить значение, и посмотрим что у нас выйдет.

i = (10,15,25,"pydocs")
print(i[1]) #выводим второй элемент (индекс начинает с 0)
print(i[0:2])# Выводи диапазон элементов

i[0] = 30 # в данном случае мы просим Python поменять значение первого элемента
Результат: TypeError: 'tuple' object does not support item assignment

Строки в Python

Строка - это последовательность символов. Строки заключаются в одинарные, или двойные кавычки, многострочные строки заключаются в тройные кавычки.

s = "Это строка"
print (s)

i = ''' Это многострочная
строка'''
print(i)

Так же как и в списках и кортежах, в строках работает знакомый нам оператор [ ], но стоит помнить, что строки неизменны.

s = "Hello world"
print (s[2])
#s[2] = 'l'
print (s[6:11])
#s[6:11] = "world"
# При попытке изменить значение в строке, мы получим ошибку
s[3] = 'k'
TypeError: 'str' object does not support item assignment

Множества в Python

Множества - это тип (класс) set, это набор из неупорядоченных элементов, разделенных между собой запятыми, внутри фигурных скобок { }. Над множествами можно выполнять различные операции, объединение, находить пересечения двух множеств, или устранения дубликатов.

a = {1,3,5,4,2} #Неупорядоченные элементы
print(a)
print(type(a))

результат:
{1, 2, 3, 4, 5} # При выводе, мы уже наблюдаем порядок
<class 'set'>

a = {2,2,3,3,4,4,5,5,6,6,7,7} # дубликаты элементов
print(a)
результат:
{2,3,4,5,6,7} # при выводе, дубликаты отбрасываются

Важно запомнить!Так как множества имеют неупорядоченную последовательность, то в данном случае индексация не имеет смысла, и соответственно оператор [ ] тут не работает.

Словари в Python

Словарь в Python - это коллекция пар ключ-значение, которая с Python 3.7 сохраняет порядок добавления элементов, которая имеет вид "key:value", определяется словарь так же, как и множества фигурными скобками. Словари используются для быстрого доступа к данным по ключу. Внутри словаря можно получить значение, зная его ключ. Важно запомнить! Ключ и его значение. могут иметь различные типы данных.

d = {10:"value", "key":3}# Как видите мы можем комбинировать числа и строки
print (type(d))

# Мы используем ключ, для получения привязанного к нему значения, но не НАОБОРОТ
print(d[10]) #обращаемся к ключу, и получаем его значение, в данном случае значение "value"
print(d['key']) # В данном случае, значение 3

Результат:
<class 'dict'>
d[10] = 'value'
d['key'] = 3
При попытке обращения к несуществующему ключу, Python вернет нам ошибку KeyError

Преобразования типов данных в Python

Различные типы данных, мы можем преобразовывать в другие типы данных.

float(5)# Преобразовываем целое число в дробное
5.0

int(10.2) # преобразовываем дробное в целое число
10

Мы так же можем преобразовывать и строки, если они содержат совместимые значения.

float('1.4')#Преобразовываем строку в дробное значение
1.4

str(11) # Целое число в строку
'11'

# При попытке преобразовать несовместимые значения, мы получим ошибку
int ('hello 21')
ValueError: invalid literal for int() with base 10:

Python так же позволяет преобразовывать множества, кортежи, списки, и словари.

set([1,1,2,2,3,3]) #передаем во множество список
{1, 2, 3} # получаем набор элементов без дубликатов (порядок во множестве не гарантирован)

tuple({5,6,7})# Передаем в кортеж множества
(5,6,7) # получаем кортеж

list ('hello') #передаем в список строку
['h','e','l','l','o'] # получаем список

С типами данных в Python 3, можно по глубже ознакомиться на сайте Python c официальной документацией

Следующий урок: Ввод, вывод и импорт

Сводная таблица встроенных типов

При выборе структуры данных важны три свойства. Изменяемость: можно ли менять объект после создания. Упорядоченность: сохраняется ли порядок элементов. Хешируемость: можно ли использовать объект как ключ словаря или элемент множества.

ТипПримерИзменяемыйПорядокМожет быть ключом
int, float42, 3.14нет-да
str"abc"нетдада
tuple(1, 2)нетдада, если внутри неизменяемые
list[1, 2]даданет
dict{"a": 1}дада, порядок вставкинет
set{1, 2}данетнет
frozensetfrozenset({1, 2})нетнетда
boolTrueнет-да
NoneTypeNoneнет-да

Словари сохраняют порядок добавления ключей начиная с Python 3.7, это гарантия языка. Множества порядок не гарантируют: маленькие целые числа часто выводятся отсортированными, но на строках порядок может меняться от запуска к запуску.

bool и None

bool является подклассом int, поэтому True + True равно 2, а sum([True, False, True]) удобно считает количество выполненных условий. None обозначает отсутствие значения: его возвращает функция без return. Проверяют его через is: if result is None.

Проверка типа через isinstance

value = True
print(type(value) == int)          # -> False
print(isinstance(value, int))      # -> True, bool наследует int
print(isinstance(3.0, int | float))  # -> True, запись через | работает с Python 3.10

type() удобен для вывода в консоль, а в условиях используйте isinstance(): он учитывает наследование и принимает сразу несколько типов. Но не злоупотребляйте проверками: если функция ожидает что-то итерируемое, часто проще просто перебрать значение и обработать исключение, чем перечислять все подходящие типы заранее.

Точность float

print(0.1 + 0.2)              # -> 0.30000000000000004
print(0.1 + 0.2 == 0.3)       # -> False

import math
from decimal import Decimal
print(math.isclose(0.1 + 0.2, 0.3))           # -> True
print(Decimal("0.1") + Decimal("0.2"))        # -> 0.3

Числа float хранятся в двоичном виде и дают около 15-17 значащих цифр. Для сравнения используйте math.isclose(), а для денег модуль decimal. Подробнее о числах читайте в статье Числа в Python 3.

Частые вопросы

Ответы на типичные вопросы читателей, которые помогут избежать частых ошибок.

Как узнать тип переменной в Python?

Вызовите type(x), например type(3.5) вернет <class 'float'>. Для проверки в условии используйте isinstance(x, float), она корректно работает с наследниками.

Почему список нельзя сделать ключом словаря?

Ключ должен быть хешируемым, а значит неизменяемым: если бы содержимое ключа поменялось, словарь не нашел бы его. Преобразуйте список в кортеж: d[tuple(items)] = value.

Чем список отличается от кортежа на практике?

Список меняют: добавляют и удаляют элементы. Кортеж фиксирован, поэтому подходит для записей с постоянной структурой вроде координат и может быть ключом словаря. Кортеж также занимает чуть меньше памяти.

Как преобразовать строку с запятой в число?

float("1,4") вызовет ValueError, Python понимает только точку. Замените запятую: float("1,4".replace(",", ".")).