Существует разделение типов данных на изменяемые и неизменяемые. Это разделение основано на возможности изменения значения объекта после его создания.
Пример:
my_list = [1, 2, 3]
Операции: добавление (
my_list.append(4)
), изменение (my_list[0] = 0
), удаление (del my_list[1]
)Пример:
my_dict = {'a': 1, 'b': 2}
Операции: добавление (
my_dict['c'] = 3
), изменение (my_dict['a'] = 0
), удаление (del my_dict['b']
)Пример:
my_set = {1, 2, 3}
Операции: добавление (
my_set.add(4)
), удаление (my_set.remove(2)
)Пример:
from array import array; my_array = array('i', [1, 2, 3])
Операции: изменение (
my_array[0] = 0
)Включают целые (
int
), вещественные (float
), комплексные (complex
).Пример:
a = 5
, b = 3.14
Операции:
a + 1
создаст новый объект.Пример:
my_str = "hello"
Операции:
my_str.replace('h', 'j')
создаст новую строку, исходная строка останется неизменной.Пример:
my_tuple = (1, 2, 3)
Операции: нельзя изменять элементы кортежа.
Пример:
my_frozenset = frozenset([1, 2, 3])
Операции: нельзя добавлять или удалять элементы.
Пример:
my_bytes = b"hello"
Операции: нельзя изменять элементы байтового объекта.
Изменяемые типы данных
# Список
my_list = [1, 2, 3]
my_list.append(4) # [1, 2, 3, 4]
my_list[0] = 0 # [0, 2, 3, 4]
# Словарь
my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3 # {'a': 1, 'b': 2, 'c': 3}
my_dict['a'] = 0 # {'a': 0, 'b': 2, 'c': 3}
# Множество
my_set = {1, 2, 3}
my_set.add(4) # {1, 2, 3, 4}
my_set.remove(2) # {1, 3, 4}
Неизменяемые типы данных
# Число
a = 5
b = a + 1 # a = 5, b = 6
# Строка
my_str = "hello"
new_str = my_str.replace('h', 'j') # my_str = "hello", new_str = "jello"
# Кортеж
my_tuple = (1, 2, 3)
# my_tuple[0] = 0 # Ошибка, кортеж неизменяем
# Фрозенсет
my_frozenset = frozenset([1, 2, 3])
# my_frozenset.add(4) # Ошибка, фрозенсет неизменяем
Ставь 👍 и забирай 📚 Базу знаний