В чем разница между наборами и списками в Python?
Является ли единственная разница между наборами и списками в Python тем фактом, что вы можете использовать функции объединения, пересечения, разности и симметричной разности для сравнения двух множеств? Почему эти функции просто нельзя применить к спискам? В каких ситуациях наборы более полезны, чем списки?
4 ответа
Там огромная разница.
- Наборы не могут содержать дубликаты
- Наборы неупорядочены
- Чтобы найти элемент в наборе, используется поиск по хешу (поэтому множества неупорядочены). Это делает
__contains__
(in
оператор) гораздо эффективнее для множеств, чем списки. - Наборы могут содержать только хешируемые элементы (см. № 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):
Для более быстрой работы: очень быстрая операция на множествах. Если у нас есть большая коллекция элементов, и если мы хотим выполнить тест членства, в этом случае целесообразно использовать набор вместо списка.
Чтобы найти отдельные предметы в коллекциях. Программисты используют наборы гораздо реже, чем диктанты и списки.
Еще несколько отличий:
- Список может быть двумерным, тогда как набор не может.
- Поскольку список упорядочен (т.е. имеет серийный номер), список выполняется сравнительно медленно, тогда как наборы выполняются быстро.
- Список в Python похож на массив Java или C.
- Печать набора почти всегда обеспечивает различную последовательность вывода.
На самом деле в python существует четыре типа сбора данных:
Список - это упорядоченная и изменяемая коллекция. Позволяет дублировать участников.
Кортеж - это упорядоченная и неизменяемая коллекция. Позволяет дублировать участников.
Set - это неупорядоченная и неиндексированная коллекция. Нет повторяющихся участников.
Словарь - это неупорядоченная, изменяемая и индексированная коллекция. Нет повторяющихся участников.
Вы можете получить доступ к элементу списка, обратившись к его индексу. однако в наборах вам необходимо пройти через элементы набора, чтобы получить к нему доступ.
Набор питонов:
Набор представляет собой неупорядоченную коллекцию уникальных предметов. Набор определяется значениями, разделенными запятой внутри фигурных скобок { }. Предметы в наборе не заказаны.
Набор неупорядоченных коллекций, индексация не имеет смысла. Следовательно, оператор среза [ ] не работает.
>>> 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