Типы данных в 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}

👉Подробнее про преобразование и приведение типов

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©