Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Типы данных в Python
Основные встроенные типы
Python поддерживает несколько основных типов данных, которые разделяются на изменяемые и неизменяемые.
1. Числовые типы
int — целые числа
x = 10
y = -5
z = 0
print(type(x)) # <class "int">
# Большие числа
big_num = 123456789012345678901234567890
print(big_num)
float — вещественные числа
x = 3.14
y = -2.5
z = 1e-3 # 0.001
print(type(x)) # <class "float">
complex — комплексные числа
z = 3 + 4j
print(z.real) # 3
print(z.imag) # 4
2. Строки (String)
s = "Hello"
s2 = "World"
s3 = """Multi
line
string"""
print(type(s)) # <class "str">
print(len(s)) # 5
print(s.upper()) # HELLO
Неизменяемый тип — нельзя изменить отдельный символ:
s = "hello"
s[0] = "H" # TypeError
3. Булевы значения (Boolean)
x = True
y = False
print(type(x)) # <class "bool">
# Любое значение может быть преобразовано в bool
print(bool(0)) # False
print(bool(1)) # True
print(bool("")) # False
print(bool("text")) # True
4. Список (List)
Изменяемый, упорядоченный набор элементов
my_list = [1, 2, 3, "hello", 3.14]
print(type(my_list)) # <class "list">
# Изменение
my_list[0] = 10
my_list.append(100)
my_list.pop() # Удалить последний
5. Кортеж (Tuple)
Неизменяемый, упорядоченный набор элементов
my_tuple = (1, 2, 3, "hello")
print(type(my_tuple)) # <class "tuple">
# Нельзя изменять
my_tuple[0] = 10 # TypeError
# Используется для возврата нескольких значений
def get_coords():
return (10, 20)
x, y = get_coords()
6. Словарь (Dictionary)
Изменяемый набор ключ-значение
my_dict = {"name": "John", "age": 30, "city": "Moscow"}
print(type(my_dict)) # <class "dict">
print(my_dict["name"]) # John
my_dict["age"] = 31
my_dict["email"] = "john@example.com"
# Итерация
for key, value in my_dict.items():
print(f"{key}: {value}")
7. Множество (Set)
Изменяемый, неупорядоченный набор уникальных элементов
my_set = {1, 2, 3, 3, 4} # {1, 2, 3, 4}
print(type(my_set)) # <class "set">
# Операции с множествами
my_set.add(5)
my_set.remove(2)
set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1.union(set2)) # {1, 2, 3, 4}
print(set1.intersection(set2)) # {2, 3}
print(set1.difference(set2)) # {1}
8. Frozenset
Неизменяемое множество
fs = frozenset({1, 2, 3})
print(type(fs)) # <class "frozenset">
# Можно использовать как ключ в словаре
my_dict = {fs: "value"}
9. Bytes
Неизменяемая последовательность байт
b = b"hello"
print(type(b)) # <class "bytes">
# Преобразование
s = "hello"
b = s.encode() # str -> bytes
s2 = b.decode() # bytes -> str
10. Bytearray
Изменяемая последовательность байт
ba = bytearray(b"hello")
ba[0] = ord("H")
print(ba) # bytearray(b"Hello")
11. None
Обозначает отсутствие значения
x = None
print(type(x)) # <class "NoneType">
if x is None:
print("x is None")
Таблица типов
| Тип | Изменяемый | Упорядоченный | Пример |
|---|---|---|---|
| int | Нет | Нет | 42 |
| float | Нет | Нет | 3.14 |
| str | Нет | Да | "hello" |
| list | Да | Да | [1, 2, 3] |
| tuple | Нет | Да | (1, 2, 3) |
| dict | Да | Да* | {"a": 1} |
| set | Да | Нет | {1, 2, 3} |
| frozenset | Нет | Нет | frozenset({1}) |
| bool | Нет | Нет | True |
| bytes | Нет | Да | b"hello" |
| None | Нет | Нет | None |
Проверка типа
x = 42
print(type(x)) # <class "int">
print(isinstance(x, int)) # True
print(isinstance(x, (int, float))) # True
Практический пример для Data Science
import numpy as np
import pandas as pd
# Обычные Python типы
numbers = [1, 2, 3, 4, 5]
names = ["Alice", "Bob", "Charlie"]
# NumPy типы
arr = np.array(numbers) # ndarray
print(type(arr)) # <class "numpy.ndarray">
# Pandas типы
df = pd.DataFrame({"name": names, "age": [25, 30, 35]})
print(type(df)) # <class "pandas.core.frame.DataFrame">
Заключение
Python поддерживает разнообразные типы данных, от простых (int, float, str) до сложных (list, dict, set). Понимание различий между изменяемыми и неизменяемыми типами критично для написания правильного кода.