Конструкторы множеств
Для того чтобы создать список можно вызвать специальный конструктор списков. На самом деле, когда вы проверяете тип объекта с помощью вызова type(obj), то вы сразу видите, подсказку какой конструктор надо использовать. Например:
>>> type(['a', 'b', ])
<class 'list'>
Проверка типа говорит, что этот объект является экземпляром класса list. А, для того чтобы создать новый экземпляр класса список, надо вызвать его конструктор. Который работает так: вы вызываете имя класса и передаете ему параметры. Иногда параметров много, иногда ни одного. Для каждого типа в Python'е есть свой собственный конструктор класса.
Сводная таблица конструкторов для коллекций
Давайте быстро подведем итоги и сравним отличия списков, кортежей, множеств и строк, которые тоже ведут себя как множества:
| Пункты сравнения | Список | Кортеж | Set | Строка | Словарь |
|---|---|---|---|---|---|
| Назначение | Хранить разные элементы | Хранить неизменный список | Хранить уникальные элементы | Хранить текстовые строки | Коллекции с доступом по ключу |
| Создание | Квадратные скобки [] |
Круглые скобки () |
Фигурные скобки {} |
Кавычки ',", ''', """, r", b" |
{ключ: значение, ...} |
| Конструктор | list() |
tuple() |
set() или frozenset() |
str() |
dict() |
| Срезы | Доступны | Доступны | Не доступны | Доступны | Не доступны |
| Мутабельность | Да | Нет | set — Да, frozenset — Нет | Нет | Да |
| Может быть ключом словаря | Нет | Да | set — Нет, frozenset — Да | Да | Нет |
| Особенности | Можно сортировать | Неизменяемый | Есть операции для множеств | Есть методы для изменения строк | Вместо индекса ключ, сохраняет порядок ключей |
| Генератор | [x for x in range(10)] |
Нет | Нет | Нет | {x: x*2 for x in range(10)} |
| Создание итераторов | (x for x in range(10)) или iter(seq) |
Есть iter(seq) |
Есть iter(seq) |
Есть iter(seq) |
Есть, iter(seq) |