Python

Список против набора в Python

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

Список Python против набора сводной таблицы

Следующая таблица содержит сводку различий между списком Python и набором.

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

Теперь давайте подробно обсудим все различия с примерами кода.

Что такое список Python?

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

myList=[1,2,3,4,5,6]
print("The list is:")
print(myList)

Выход:

The list is:
[1, 2, 3, 4, 5, 6]

Мы также можем преобразовать другой объект-контейнер, например кортеж, в список, используя метод list() функция. list() Функция принимает другой элемент в качестве входного аргумента и возвращает новый список, содержащий все элементы объекта входного контейнера. Вы можете наблюдать это на следующем примере.

myList=list((1,2,3,4,5,6))
print("The list is:")
print(myList)

Выход:

The list is:
[1, 2, 3, 4, 5, 6]

Список может содержать объекты разных типов данных и другие объекты-контейнеры, такие как списки, кортежи, наборы и т. д., как показано ниже.

myList=[1,"PFB",(1,2,3),101.1117,5,6]
print("The list is:")
print(myList)

Выход:

The list is:
[1, 'PFB', (1, 2, 3), 101.1117, 5, 6]

Вы можете заметить, что список в приведенном выше списке содержит целое число, строку, кортеж и число с плавающей запятой.

Все элементы в списке расположены в определенном порядке, и мы можем получить к ним доступ с помощью оператора индексации Python. Первый элемент в списке имеет индекс 0, второй элемент имеет индекс 1 и так далее. Вы можете наблюдать это на следующем примере.

myList=[1,"PFB",(1,2,3),101.1117,5,6]
print("The list is:")
print(myList)
print("The element at index 3 is:")
print(myList[3])

Выход:

The list is:
[1, 'PFB', (1, 2, 3), 101.1117, 5, 6]
The element at index 3 is:
101.1117

Мы также можем использовать отрицательные индексы для доступа к элементам в списке. Отрицательный индекс -1 дает нам последний элемент списка. Индекс -2 дает предпоследний элемент и так далее. Вы можете наблюдать это на следующем примере.

myList=[1,"PFB",(1,2,3),101.1117,5,6]
print("The list is:")
print(myList)
print("The element at index -2 is:")
print(myList[-2])

Выход:

The list is:
[1, 'PFB', (1, 2, 3), 101.1117, 5, 6]
The element at index -2 is:
5

Что такое набор Python?

Набор Python — это структура данных, используемая для хранения уникальных элементов неупорядоченным образом. Мы можем определить набор в Python с помощью фигурных скобок, как показано ниже.

mySet={1,2,3,4,5,6}
print("The set is:")
print(mySet)

Выход:

The set is:
{1, 2, 3, 4, 5, 6}

Мы также можем преобразовать другой объект-контейнер, например список, в набор, используя метод set() функция. set() Функция принимает другой объект-контейнер в качестве входного аргумента и возвращает набор. Вы можете наблюдать это на следующем примере.

mySet=set([1,2,3,4,5,6])
print("The set is:")
print(mySet)

Выход:

The set is:
{1, 2, 3, 4, 5, 6}

Элементы в наборе расположены в произвольном порядке. Вы не можете получить к ним доступ, используя индексы. Однако вы можете перебирать элементы в наборе, используя цикл for, как показано ниже.

mySet=set([1,2,3,4,5,6])
print("The set is:")
print(mySet)
print("The elements in the set are:")
for element in mySet:
    print(element)

Выход:

The set is:
{1, 2, 3, 4, 5, 6}
The elements in the set are:
1
2
3
4
5
6

Список Python против набора: синтаксис

Есть много различий в синтаксисе списка и набора.

Мы можем получить доступ к элементам списка, используя индексы. Наоборот, если мы попытаемся получить доступ к элементу в наборе с помощью индексов, программа выдаст ошибку. Вы можете наблюдать это на следующем примере.

myList=[1,2,3,4,5,6]
mySet={1,2,3,4,5,6}
print("The list is:")
print(myList)
print("The element is:",myList[2])
print("The set is:")
print(mySet)
print("The element is:",mySet[2])

Выход:

The list is:
[1, 2, 3, 4, 5, 6]
The element is: 3
The set is:
{1, 2, 3, 4, 5, 6}

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_22443/2698134410.py in <module>
      6 print("The set is:")
      7 print(mySet)
----> 8 print("The element is:",mySet[2])

TypeError: 'set' object is not subscriptable

В этом примере вы можете заметить, что мы можем получить доступ к элементу в списке, используя нотацию нижнего индекса. Однако программа сталкивается с исключением Python TypeError, когда мы делаем это с набором.

Мы можем создать пустой список, используя квадратные скобки [] без какого-либо элемента. Однако мы не можем создать набор с помощью фигурных скобок {} без элементов. Набор фигурных скобок без какого-либо элемента создает словарь, а не набор. Вы можете наблюдать это на следующем примере.

myList=[]
mySet={}
print("The data type of myList is:")
print(type(myList))
print("The data type of mySet is:")
print(type(mySet))

Выход:

The data type of myList is:
<class 'list'>
The data type of mySet is:
<class 'dict'>

В приведенном выше примере вы можете заметить, что тип данных [] это список, тогда как {} является dict и не установлен. Следовательно, мы не можем создать пустой набор с помощью фигурных скобок.

Мы можем создавать вложенные списки в Python. Однако мы не можем создавать вложенные наборы в Python. Это приведет к ошибке, как показано ниже.

myList=[[1,2,3],[4,5,6],[7,8,9]]
print("The list is:")
print(myList)
mySet={{1,2,3},{4,5,6},{7,8,9}}
print("The set is:")
print(mySet)

Выход:

The list is:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_22443/2710306261.py in <module>
      2 print("The list is:")
      3 print(myList)
----> 4 mySet={{1,2,3},{4,5,6},{7,8,9}}
      5 print("The set is:")
      6 print(mySet)

TypeError: unhashable type: 'set'

Список против набора: повторение

Списки допускают присутствие в них повторяющихся элементов. Однако мы не можем повторять элементы в наборе. Даже если мы передаем несколько экземпляров элемента при создании набора, он будет хранить только один экземпляр одного элемента. Вы можете наблюдать это на следующем примере.

myList=[1,2,2,3,3,3,4,4,4,4,5]
print("The list is:")
print(myList)
mySet={1,2,2,3,3,3,4,4,4,4,5}
print("The set is:")
print(mySet)

Выход:

The list is:
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5]
The set is:
{1, 2, 3, 4, 5}

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

Список против набора: изменчивость

И списки, и наборы изменяемы. Вы можете добавлять и удалять элементы как из набора, так и из списка. Однако вы не можете добавлять в набор изменяемые объекты, такие как списки, наборы, словари и т. д. Наборы могут содержать только неизменяемые элементы.

Python в операторе: список против набора

Мы можем использовать оператор in, чтобы проверить, присутствует ли элемент в наборе, а также в списке. Нет никакой разницы между использованием оператора in со списком или набором.

Список Python против набора: производительность

Создание набора требует дополнительной работы по сравнению с созданием списка. Для каждого элемента, с которым мы хотим инициировать набор, интерпретатор должен проверить, присутствует ли этот элемент уже в наборе или нет. Благодаря этому создание списка имеет лучшую производительность по сравнению с созданием набора. Создание набора занимает в два раза больше времени, чем создание списка с таким же количеством элементов. Вы можете наблюдать это на следующем примере.

Список Python против заданной производительности
Список Python против заданной производительности

При добавлении нового элемента в набор программа сначала проверяет, присутствует ли этот элемент в наборе или нет. Если его нет, то в набор добавляется только элемент. В списке элемент непосредственно добавляется к списку. Из-за накладных расходов на проверку наличия нового элемента набор имеет низкую производительность по сравнению со списком при добавлении нового элемента. Вы можете наблюдать это на следующем примере.

Список против набора производительности при добавлении элемента
Список против набора производительности при добавлении элемента

Даже при переборе элементов с использованием цикла for список имеет лучшую производительность, чем набор как показано ниже.

Список Python против заданной производительности в итерации
Список Python против заданной производительности в итерации

Следовательно, мы можем сказать, что а Список Python имеет лучшую производительность, чем набор, в большинстве операций, если оба объекта имеют одинаковое количество элементов.

Когда использовать список или набор в Python?

Списки допускают дублирование элементов и произвольный доступ. Следовательно, если вы хотите хранить повторяющиеся элементы и получать доступ к элементам случайным образом, используя их положение, вам следует использовать список. Если вам нужно хранить уникальные элементы, вы можете использовать набор.

Заключение

В этой статье мы обсудили список и набор в Python, чтобы сравнить производительность, синтаксис, изменчивость и повторение. Чтобы узнать больше о программировании на Python, вы можете прочитать эту статью о списке и словаре в Python. Вам также может понравиться эта статья о if vs elif vs else в python.

Надеюсь, вам понравилось читать эту статью. Следите за информативными статьями.

Счастливого обучения!

Рекомендуемое обучение Python

Курс: Python 3 для начинающих

Более 15 часов видеоконтента с инструкциями для начинающих. Узнайте, как создавать приложения для реального мира, и освойте основы.


Ссылка на источник

Похожие статьи

Кнопка «Наверх»