Содержание
Краткое резюме
- Множества (set) в Python — коллекции уникальных элементов без порядка.
- Для создания пустого множества нужно использовать конструктор, а не пустые фигурные скобки.
- В множества можно добавлять только хэшируемые (immutable) типы данных, списки и другие множества недопустимы.
- С множествами доступны стандартные теоретико-множественные операции: объединение, пересечение, разность.
- Существует неизменяемый аналог множества —
frozenset
. - Словари (dict) — структуры данных, хранящие пары «ключ: значение», где ключи — уникальны и должны быть хэшируемыми.
- Для перебора словаря удобно использовать методы
keys()
,values()
иitems()
. - Значения словаря могут быть любыми типами, включая изменяемые.
- Объект
None
используется в Python для возвращения «ничего» — ситуаций, когда функция не возвращает конкретных значений.
Множества (set) в Python 🌐
Множество — это неупорядоченный набор уникальных элементов. Для создания множества перечисляют элементы в фигурных скобках:
my_set = {1, 2, 3}
Особенности множества:
- Элементы не повторяются.
- Порядок элементов не сохраняется. Если вывести множество несколько раз, порядок элементов может отличаться.
- В множество можно помещать только хэшируемые типы, такие как
int
,float
,str
,tuple
и другие неизменяемые объекты.
Пример:
my_set = {1, "hello", 3.14, (1, 2)}
Однако нельзя положить в множество изменяемые типы, например список или другое множество:
my_set.add([1, 2]) # Ошибка TypeError: unhashable type: 'list'
my_set.add({1, 2}) # Ошибка TypeError
Как создать пустое множество?
Пустые фигурные скобки {}
создают словарь, а не множество. Пустое множество создаётся с помощью конструктора:
empty_set = set()
Операции с множествами
С множествами можно выполнять основные теоретико-множественные операции:
- Добавление элемента:
add()
- Удаление элемента:
remove()
илиdiscard()
- Объединение:
union()
или оператор|
- Пересечение:
intersection()
или оператор&
- Разность:
difference()
или оператор-
- Проверка принадлежности элемента:
in
- Проверка подмножества и надмножества:
issubset()
,issuperset()
Неизменяемое множество — frozenset ❄️
frozenset
— это неизменяемый (immutable) вариант множества, который создаётся через конструктор и может содержаться в других множествах:
fs = frozenset({1, 2, 3})
По элементам set
и frozenset
можно итерироваться в цикле for
:
for element in my_set:
print(element)
Словари (dict) — ассоциативные массивы и хэш-таблицы 🗂️
Словарь — это структура, которая хранит пары ключ-значение. Форма записи:
my_dict = {"ключ1": "значение1", "ключ2": "значение2"}
Особенности словарей:
- Ключи уникальны.
- Ключи должны быть хэшируемыми (например,
str
,int
,tuple
). - Значения могут быть любого типа, включая изменяемые (списки, другие словари и т.д.).
Чтобы обратиться к значению по ключу, используют квадратные скобки с ключом:
value = my_dict["ключ1"]
Словари являются изменяемым типом, поэтому для ключа можно менять значение:
my_dict["ключ1"] = "новое значение"
Перебор словаря
При переборе словаря циклом for
перебираются только ключи:
for key in my_dict:
print(key)
Чтобы вывести и ключи и значения, используют метод .items()
:
for key, value in my_dict.items():
print(key, value)
Методы словаря:
keys()
— возвращает только ключи,values()
— возвращает только значения,items()
— возвращает пары (ключ, значение).
Хэшируемость и ошибки
Ключи словаря и элементы множества должны быть хэшируемыми объектами (hashable
). Попытка использовать изменяемые объекты (например, список) в таких местах приведёт к ошибке:
hash([1, 2]) # TypeError: unhashable type: 'list'
Поэтому правильнее говорить, что в множествах и словарях могут храниться только хэшируемые типы данных.
Объект None — значение "ничего" ⚪
В Python все функции должны возвращать значение. Иногда функция «ничего не возвращает» конкретно — для этого используется объект None
.
Он обозначает отсутствие значения и часто применяется, когда функция выполняет действия, но не даёт результата.
def my_function():
print("Действие выполнено")
return None # можно опустить, Python вернёт None по умолчанию
«Объект None используется, когда нужно вернуть "ничего" — пустое значение без конкретной информации.»
Таким образом, множества и словари — ключевые структуры данных в Python, основанные на хэшировании, с чёткими правилами выбора элементов и способов работы с ними. Понимание этих понятий позволит более эффективно писать и оптимизировать код.