Ви не можете додати список до набору, оскільки списки можуть змінюватися, це означає, що ви можете змінити вміст списку після додавання його до набору.
Однак ви можете додати кортежі до набору, оскільки ви не можете змінити вміст кортежу:
>>> a.add(('f', 'g'))
>>> print a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])
Редагувати : деяке пояснення: Документація визначає set
як не упорядковану колекцію різних об'єктів, що змішуються. Об'єкти повинні бути доступними, щоб знайти, додавати та вилучати елементи можна швидше, ніж переглядати кожен окремий елемент кожного разу, коли ви виконуєте ці операції. Конкретні алгоритми, що використовуються, пояснюються у статті Вікіпедії . Алгоритми хешування хитов пояснюються на effbot.org, а пітони __hash__
функціонують у довідці python .
Деякі факти:
- Набір елементів , а також клавіші словника повинні бути перебірливими
- Деякі типи даних:
list
: використовувати tuple
замість цього
set
: використовувати frozenset
замість цього
dict
: не має офіційного аналога, але є деякі
рецепти
- Екземпляри об'єктів за замовчуванням є хешируемими, кожен з яких має унікальний хеш. Ви можете змінити таку поведінку, як пояснено в довідці python.