Набор и список — это структуры данных в Python, которые хранят коллекцию элементов, но разными способами.

Список содержит коллекцию упорядоченных элементов, тогда как набор содержит коллекцию неупорядоченных элементов.

В таблице ниже показана разница между списком и набором:

Список Набор
Списки в Python сохраняют порядок элементов при их вставке. Наборы Python не поддерживают порядок элементов.
Списки Python являются динамическими и могут быть изменены(элементы можно добавлять, удалять или изменять). Хотя набор в самом Python является изменяемым(мы можем добавлять или удалять элементы), его элементы должны быть неизменяемого типа(например, числа, строки и кортежи).
Списки Python могут содержать элементы с одинаковым значением. Наборы в Python не могут иметь повторяющиеся значения. Если мы попытаемся добавить дубликат, он просто проигнорируется.
Списки поддерживают индексацию, и доступ к ним можно получить с помощью положительных и отрицательных индексов. Из-за своей неупорядоченности наборы не поддерживают индексацию.
Список Python может содержать данные любого типа, включая другие списки. Наборы Python реализованы с использованием хеш-таблиц, что делает поиск элементов быстрее, чем в списках.

Список в Python — это упорядоченный набор элементов, определяемый квадратными скобками []. Он может содержать элементы любого типа, например числа, строки и другие объекты, и может быть смешанного типа.

А набор в Python — это неупорядоченная коллекция уникальных элементов. Определяется фигурными скобками {}. Это похоже на математическую концепцию множества: никаких повторяющихся элементов и определенного порядка.

Для преобразования списка в набор в Python существует несколько подходов.

Содержание

С помощью метода set()

Метод set() в Python — это встроенный метод, позволяющий преобразовать список в набор. Конструктор set() принимает итерируемый объект(например, список) и возвращает его эквивалент набора, автоматически удаляя любые дубликаты.

Например, вы курируете плейлист классических рок-групп США на Python, но мы по ошибке отметили некоторые группы несколько раз. Чтобы удалить эти повторяющиеся бренды, мы можем преобразовать список в набор Python, который удалит из него все повторяющиеся значения.

Список брендов определен ниже.

bands_list = ["Nirvana", "Aerosmith", "Eagles", "Nirvana", "Metallica", "Aerosmith"]

Посмотрите на список. Он содержит повторяющиеся элементы, такие как «Нирвана». Чтобы удалить этот дубликат, передайте список конструктору set(), как показано ниже.

unique_bands = set(bands_list)

Просмотрите файл unique_bands.

print('The set: ', unique_bands)

С помощью метода set()

Из вывода вы можете видеть, что список «bands_list» преобразуется в набор с помощью конструктора set(). В результате также удалил повторяющиеся значения и вернул такой набор: {‘Aerosmith’, ‘Metallica’, ‘Nirvana’, ‘Eagles’}.

Давайте разберемся с этой частью кода: «unique_bands = set(bands_list)». Здесь использование конструктора set() напрямую преобразует список в набор в Python, автоматически удаляя повторяющиеся полосы и гарантируя уникальность каждой полосы.

С помощью цикла For

Этот ручной подход включает перебор списка Python с использованием цикла for и добавление каждого элемента в пустой набор. Это просто и позволяет использовать дополнительную логику или проверки в процессе преобразования.

Например, вы классифицируете памятники США и хотите, чтобы они содержали уникальные элементы в качестве набора.

Список памятников приведен ниже.

monuments_list = ["Statue of Liberty", "Mount Rushmore", "Statue of Liberty", "Lincoln Memorial"]

Вам необходимо преобразовать приведенный выше список в набор, поэтому создайте пустой набор, используя конструктор set(), как показано ниже.

monuments_set = set()

После этого переберите список «monuments_list» и добавьте каждый элемент из списка в пустой набор, как показано ниже в коде.

for monument in monuments_list:
    monuments_set.add(monument)

print('The set:', monuments_set)

Список Python для установки с помощью цикла For

Из приведенного выше вывода видно, что пустой набор содержит элемент из списка, но не содержит дублирующего элемента.

Давайте разберемся в части кода. Список Python Monuments_list содержит несколько повторяющихся памятников США. Затем инициализируйте пустой набор памятников Python, используя конструктор set().

Используя эту строку «for памятник в памятниках_list:», пройдите по каждому памятнику в списке.

После этого на каждой итерации этот код: ‘monuments_set.add(monument)’ Если памятник еще не находится в наборе Python(наборы по своей сути не допускают дублирования), он добавляется. Этот простой подход использует цикл для создания уникального набора памятников.

В результате список преобразуется в набор и выглядит так: {‘Гора Рашмор’, ‘Мемориал Линкольна’, ‘Статуя Свободы’}’.

С использованием Set Comprehension

Понимание множеств обеспечивает краткий способ создания наборов в Python, аналогично тому, как понимание списков работает для списков. Это полезно, когда необходимо отфильтровать или применить преобразование к элементам списка Python во время преобразования.

Пример:

cities = ["Los Angeles", "New York", "San Francisco", "Houston", "San Diego"]

Чтобы преобразовать этот список в набор, используя понимание множества, вы можете запустить приведенный ниже код.

set_cities = {city for city in cities}
print('The set:', california_cities)

С использованием Set Comprehension

Из приведенного выше вывода вы можете видеть, что список «города» преобразуется в набор с использованием понимания множества.

Эта часть кода «set_cities = {city for city in citys}» использует понимание множества, где в фигурных скобках { } указан цикл for, который берет каждый город из списка «города» и добавляет их в набор.

В результате он создает новый набор из элемента списка, например {‘Лос-Анджелес’, ‘Хьюстон’, ‘Сан-Франциско’, ‘Сан-Диего’, ‘Нью-Йорк’}.

Добавить комментарий