Искать
Вы превысили запрос на
0 знаков

28. Методы и особенности множеств в Python

Не пройден
0
0

Кратко

- Множества в Python создаются с использованием фигурных скобок или функции set().

- Множества являются неупорядоченной структурой данных.

- Чтобы оставить в списке только уникальные элементы, достаточно сделать их него множество с помощью функции set().

- Поиск элемента во множестве выполняется быстро благодаря хеш-таблицам.

- Элементы множеств в Python должны быть хешируемыми объектами (числа, строки, кортежи).

- Методы множеств в Python: add(), remove(), discard(), pop() и clear().

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

Особенности множеств в Python

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

Пример (python)
s = {}
print(type(s)) # => <class 'dict'> 

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

Пример (python)
s = set()
print(type(s)) # => <class 'set'> 

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

Чтобы оставить в списке только уникальные элементы, можно его передать во множество:

Пример (python)
s = set([1, 1, 2, 2, 3])
print(list(s)) # => [1, 2, 3] 

Как было сказано ранее, получить доступ к конкретному элементу множества по индексу нельзя, но можно перебрать их все с помощью цикла for:

Пример (python)
s = {1, 1, 2, 2, 3}
for item in s:
    print(item) 

Так же вы можете проверить наличие элемента во множестве при помощи оператора in:

Пример (python)
s = {1, 1, 2, 2, 3}
print(1 in s) # => True 

Стоит заметить, что такая проверка выполняется очень быстро. Например, чтобы найти в неотсортированном массиве из n элементов какое-то значение, необходимо пройтись по всем элементам (в худшем случае):

Пример (python)
m = [1, 2, 3, 4, 5]
sought = 5
for i in m:
    if (i == sought):
        pass 

Такой алгоритм обладает линейной сложностью О(n), и с возрастанием числа элементов, сложность увеличивается. Да, кстати, в примере использовался оператор pass, о котором поговорим в дальнейших уроках.

Не будем усложнять урок алгоритмами. Добавим только, что поиск элемента во множестве выполняется в среднем за O(1), так как множества основаны на хэш-таблицах.

Здесь изображение или скриншот.
Для доступа необходимо авторизоваться на сайте Codebra.

Опять же, об алгоритмах, их сложности и обозначениях поговорим в отдельном разделе.

Последнее, что хотелось сказать об особенностях множеств, это элементы, которые можно в них добавлять. Элементами множеств в Python могут быть только хешируемые объекты, например: числа, строки, кортежи, если они состоят из хешируемых элементов и т.д. В свою очередь, списки и словари не могут быть элементами множества. В предыдущих уроках мы говорили про типы данных и их классификации. Далее пример использования списков в виде элементов множества:

Пример (python)
a = [1, 2]
b = [2, 3]
s = {a, b}
print(s) # => TypeError: unhashable type: 'list' 

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

Методы множеств в Python

Множества в Python имеют свои методы. Чтобы добавить элемент во множество, существует метод add().

Пример (python)
s = {1, 1, 2, 2, 3}
s.add(3)
s.add(4)

print(s) # => {1, 2, 3, 4} 

Удалить элемент из множества можно двумя методами: remove() и discard(). Сейчас разберемся в их различии. Для начала удалим обоими методами элементы, которые находятся во множестве:

Пример (python)
s = {1, 1, 2, 2, 3}
s.remove(1)
s.discard(2)
print(s) # => {3} 

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

Пример (python)
s = {1, 1, 2, 2, 3}
s.discard(5)
print(s) # => {1, 2, 3} 

Ничего не произошло. Совсем другая ситуация обстоит с методом remove():

Пример (python)
s = {1, 1, 2, 2, 3}
s.remove(5)
print(s) 

При выполнении кода возникло исключение KeyError:

Пример (python)
Traceback (most recent call last):
  File "C:/set.py", line 2, in <module>
    s.remove(5)
KeyError: 5 

Что такое исключения в Python, когда они возникают и как их перехватывать вы узнаете далее.

Чтобы вернуть «случайный» элемент и удалить его из множества, используйте метод pop():

Пример (python)
s = {1, 1, 2, 2, 3}

print(s.pop()) # => 1
print(s.pop()) # => 2
print(s.pop()) # => 3 

Для очистки множества от элементов существует метод clear():

Пример (python)
s = {1, 1, 2, 2, 3}
s.clear()
print(s) # => set() 

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

Тест

Две секундочки...

Похожие уроки Codebra

@codebra_official
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Итоги раздела «Структуры данных в Python»Знакомство с Python
Типы данных в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Введение в раздел «Структуры данных в Python»Знакомство с Python
Пользовательские функции в PHPКурс по PHP
Погружение в PythonЗнакомство с Python
Еще о возможностях модулей в PythonЗнакомство с Python
Внутреннее устройство и сортировка словаря в PythonЗнакомство с Python
Работа с файлами в PythonЗнакомство с Python
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию и компьютерной безопасности. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Пентесту Active Directory, Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно