В чем разница между наборами и списками в Python?

Является ли единственная разница между наборами и списками в Python тем фактом, что вы можете использовать функции объединения, пересечения, разности и симметричной разности для сравнения двух множеств? Почему эти функции просто нельзя применить к спискам? В каких ситуациях наборы более полезны, чем списки?

4 ответа

Там огромная разница.

  1. Наборы не могут содержать дубликаты
  2. Наборы неупорядочены
  3. Чтобы найти элемент в наборе, используется поиск по хешу (поэтому множества неупорядочены). Это делает __contains__ (in оператор) гораздо эффективнее для множеств, чем списки.
  4. Наборы могут содержать только хешируемые элементы (см. № 3). Если вы попытаетесь: set(([1],[2])) вы получите TypeError,

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

Также обратите внимание, что если вы не заботитесь о порядке и т. Д., Вы можете использовать

new_set = myset.intersection(mylist)

чтобы получить пересечение между set и list ,

sets - Неупорядоченные коллекции уникальных элементов

lists - упорядоченные коллекции элементов

sets позволяет выполнять такие операции, как intersection, union, difference, а также symmetric difference операции математической теории множеств. Наборы не позволяют индексировать и реализованы на хеш-таблицах.

lists действительно массивы переменной длины, а не связанные списки в стиле Lisp. В списках элементы доступны по индексам.

Задавать

Набор - это неупорядоченная и неиндексированная коллекция, которая не допускает дублирование. В Python наборы пишутся с помощью фигурных скобок.

# example set
newset = {"one", "two", "three"}
  • Вы не можете получить доступ к элементам в наборе, ссылаясь на индекс
  • Наборы изменчивы
  • Они полезны для проверки дубликатов

Список

Список - это коллекция, упорядоченная и изменяемая. В Python списки пишутся в квадратных скобках.

# example list
newlist =["one", "two", "three"]
  • Вы получаете доступ к элементам списка, ссылаясь на номер индекса
  • Списки изменчивы.

Набор представляет собой коллекцию отдельных элементов. В python наборы в основном используются по двум причинам (Книга: Data Science from Scratch, Joel Gruce):

  1. Для более быстрой работы: очень быстрая операция на множествах. Если у нас есть большая коллекция элементов, и если мы хотим выполнить тест членства, в этом случае целесообразно использовать набор вместо списка.

  2. Чтобы найти отдельные предметы в коллекциях. Программисты используют наборы гораздо реже, чем диктанты и списки.

Еще несколько отличий:

  1. Список может быть двумерным, тогда как набор не может.
  2. Поскольку список упорядочен (т.е. имеет серийный номер), список выполняется сравнительно медленно, тогда как наборы выполняются быстро.
  3. Список в Python похож на массив Java или C.
  4. Печать набора почти всегда обеспечивает различную последовательность вывода.

На самом деле в python существует четыре типа сбора данных:

Список - это упорядоченная и изменяемая коллекция. Позволяет дублировать участников.

Кортеж - это упорядоченная и неизменяемая коллекция. Позволяет дублировать участников.

Set - это неупорядоченная и неиндексированная коллекция. Нет повторяющихся участников.

Словарь - это неупорядоченная, изменяемая и индексированная коллекция. Нет повторяющихся участников.

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

источник: https://www.w3schools.com/python/python_sets.asp

Набор питонов:

Набор представляет собой неупорядоченную коллекцию уникальных предметов. Набор определяется значениями, разделенными запятой внутри фигурных скобок { }. Предметы в наборе не заказаны.

Набор неупорядоченных коллекций, индексация не имеет смысла. Следовательно, оператор среза [ ] не работает.

>>> a = {1,2,2,3,3,3}
>>> a
set([1, 2, 3])
>>> a[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing

Список Python:

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

Объявление списка довольно просто. Элементы, разделенные запятыми, заключены в квадратные скобки [ ].

>>> a = [1, 2.2, 'python']

Мы можем использовать оператор нарезки [ ], чтобы извлечь элемент или диапазон элементов из списка. Индекс начинается с 0 в Python.

Списки изменчивы, то есть значение элементов списка может быть изменено.

Ссылка

Разница между наборами и списками Здесь мы обсудим разницу между наборами и списками в Python.

Списки1) Списки сохраненных элементов в порядке их вставки. 2) Списки поддерживают индексацию. 3) Мы можем изменить значение элемента, хранящегося в списках. 4) В списках могут храниться повторяющиеся значения. 5) Списки объявляются в квадратных скобках. 6) Пример: A = [1, 2, 3, 4, 5, 1, 2, 3]

Наборы1) Наборы не сохраняют элементы в том порядке, в котором они были вставлены. 2) Наборы не поддерживают индексацию. 3) Мы не можем изменить значение элемента, хранящегося в наборах. 4) Наборы не могут хранить повторяющиеся значения. 5) Множества объявляются в фигурных скобках. 6) Пример: A = {1, 2, 3, 4, 5}

Узнайте больше о наборах с примером по ссылке ниже https://tutorialsimpact.com/python/sets-in-python

Другие вопросы по тегам