Python типы: числа строки списки и словари

Раздел: Типы данных -> Все типы данных

Основные типы данных в Python

Python предоставляет разнообразные типы данных, которые делятся на изменяемые и неизменяемые, упорядоченные и неупорядоченные. Выбор правильного типа повышает эффективность кода.

Все типы данных являются объектами. Ниже приведены подробные варианты работы с каждым типом.

Как хранить целые числа в Python?

Тип int

Для целых чисел используется тип int. Он поддерживает произвольную точность.

a = 42
b = -7
c = 12345678901234567890
print(a, b, c)

тип данных используемый в python (типы данных, используемые в python)

42 -7 12345678901234567890

Типичная ошибка:

print(5/2)   # 2.5
print(5//2)  # 2

Как работать с числами с плавающей точкой?

Тип float

Тип float представляет числа с плавающей точкой двойной точности.

x = 3.1415
y = 1.23e-4
print(x, y)
3.1415 0.000123

Проблема точности:

print(0.1 + 0.2)  # 0.30000000000000004

Для точных десятичных вычислений лучше использовать модуль decimal.

Как обрабатывать текстовые данные?

Тип str

Строки неизменяемы. Поддерживают одинарные, двойные кавычки и тройные для многострочных.

s1 = 'Hello'
s2 = "World"
s3 = '''Multi
line'''
print(s1, s2, s3[0])
Hello World M

Ошибка индексации:

print(s1[10])  # IndexError

Перед обращением проверяйте длину строки.

Как представлять логические значения?

Тип bool

Имеет значения True и False. Является подклассом int.

a = True
b = False
print(a and b, a or b, not a)
False True False

Неявное приведение:

print(1 == True, 0 == False)  # True True

Сравнение с числами может привести к путанице.

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

Тип list

Списки хранят элементы разных типов, допускают изменение, добавление, удаление.

lst = [1, 'a', 3.14]
lst.append(2)
lst[0] = 10
print(lst)
[10, 'a', 3.14, 2]

Ошибка изменения при передаче по ссылке:

def f(l):
    l.append(100)
my_list = [1,2,3]
f(my_list)
print(my_list)  # [1,2,3,100]

Список изменяется внутри функции, что не всегда ожидаемо. Для копирования используйте copy() или срезы.

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

Тип tuple

Кортежи похожи на списки, но не могут быть изменены после создания. Часто используются для фиксированных данных.

t = (1, 2, 3)
print(t[0])
# t[0] = 5  # TypeError
1

Кортеж из одного элемента:

single = (5)  # int
single_tuple = (5,)
print(type(single), type(single_tuple))
<class 'int'> <class 'tuple'>

Обязательно ставить запятую.

Как хранить уникальные элементы без порядка?

Тип set

Множество - неупорядоченная коллекция уникальных элементов. Быстрая проверка вхождения.

s = {1, 2, 3, 2}
print(s)
s.add(4)
print(1 in s)
{1, 2, 3}
True

Неизменяемые элементы:

s2 = {[1,2]}  # TypeError: unhashable type: 'list'

Множество может содержать только хэшируемые объекты.

Как хранить пары ключ-значение?

Тип dict

Словарь - неупорядоченная (до Python 3.7) структура с уникальными ключами. С 3.7 сохраняет порядок вставки.

d = {'name': 'Alice', 'age': 25}
d['age'] = 26
d['city'] = 'NY'
print(d.keys())
dict_keys(['name', 'age', 'city'])

Ошибка доступа к отсутствующему ключу:

print(d['salary'])  # KeyError

Используйте метод get() или проверяйте ключ оператором in.

Как обозначить отсутствие значения?

Тип NoneType

Единственное значение None. Используется для обозначения пустоты или отсутствия результата.

x = None
print(type(x))
if x is None:
    print('Nothing')
<class 'NoneType'>
Nothing

Сравнение с None:

if x == None:  # не рекомендуется
    pass

Лучше использовать is None, так как None - синглтон.

Расширенные примеры работы с типами данных

1. Точные десятичные вычисления (Decimal)

Пример
from decimal import Decimal, getcontext
getcontext().prec = 6
x = Decimal('0.1')
y = Decimal('0.2')
print(x + y)  # 0.3 без ошибки округления
0.3

2. Комплексные числа (complex)

Пример
z1 = 3 + 4j
z2 = complex(1, 2)
print(z1 + z2, z1.real, z1.imag)
(4+6j) 3.0 4.0

3. Замороженное множество (frozenset) как хэшируемый набор

Пример
fs = frozenset([1, 2, 3])
d = {fs: 'value'}  # можно использовать как ключ
print(d[fs])
value

4. Двоичные данные: bytes и bytearray

Пример
b = b'hello'
ba = bytearray(b)
ba[0] = 72  # преобразуем 'h' в 'H' (72)
print(ba.decode())
Hello

5. Проверка типа с помощью isinstance и type

Пример
def process(value):
    if isinstance(value, (int, float)):
        print('Число')
    elif type(value) == str:
        print('Строка')
    else:
        print('Другой тип')
process(10), process('abc'), process([1])
Число
Строка
Другой тип

6. Кортеж как ключ словаря

Пример
coords = {}
coords[(10, 20)] = 'point A'
coords[(30, 40)] = 'point B'
print(coords[(10, 20)])
point A

7. Преобразование списка строк в одну строку (join)

Пример
words = ['Python', 'типы', 'данных']
line = ', '.join(words)
print(line)
Python, типы, данных

8. Операции над множествами: объединение, пересечение, разность

Пример
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
print('Объединение:', A | B)
print('Пересечение:', A & B)
print('Разность A-B:', A - B)
Объединение: {1, 2, 3, 4, 5, 6}
Пересечение: {3, 4}
Разность A-B: {1, 2}

Типы данных, используемые в Python - comments

En
тип данных используемый в python (python)