Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Наборы Python

Наборы Python

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

Видео:наборы в Python

Набор — это неупорядоченная коллекция элементов. Каждый элемент набора уникален (не повторяется) и должен быть неизменным (нельзя изменить).

Однако сам набор является изменчивым. Мы можем добавлять или удалять элементы из него.

Множества также можно использовать для выполнения математических операций над множествами, таких как объединение, пересечение, симметричная разность и т. д.

<час>

Создание наборов Python

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

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

# Different types of sets in Python
# set of integers
my_set = {1, 2, 3}
print(my_set)

# set of mixed datatypes
my_set = {1.0, "Hello", (1, 2, 3)}
print(my_set)

Вывод

{1, 2, 3}
{1.0, (1, 2, 3), 'Hello'}

Попробуйте также следующие примеры.

# set cannot have duplicates
# Output: {1, 2, 3, 4}
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)

# we can make set from a list
# Output: {1, 2, 3}
my_set = set([1, 2, 3, 2])
print(my_set)

# set cannot have mutable items
# here [3, 4] is a mutable list
# this will cause an error.

my_set = {1, 2, [3, 4]}

Вывод

{1, 2, 3, 4}
{1, 2, 3}
Traceback (most recent call last):
  File "<string>", line 15, in <module>
    my_set = {1, 2, [3, 4]}
TypeError: unhashable type: 'list'
<час>

Создать пустой набор немного сложно.

Пустые фигурные скобки {} сделает пустой словарь в Python. Чтобы сделать набор без каких-либо элементов, мы используем set() функция без каких-либо аргументов.

# Distinguish set and dictionary while creating empty set

# initialize a with {}
a = {}

# check data type of a
print(type(a))

# initialize a with set()
a = set()

# check data type of a
print(type(a))

Вывод

<class 'dict'>
<class 'set'>
<час>

Изменение набора в Python

Наборы изменяемы. Однако, поскольку они неупорядочены, индексация не имеет смысла.

Мы не можем получить доступ к элементу набора или изменить его с помощью индексации или нарезки. Заданный тип данных не поддерживает его.

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

# initialize my_set
my_set = {1, 3}
print(my_set)

# my_set[0]
# if you uncomment the above line
# you will get an error
# TypeError: 'set' object does not support indexing

# add an element
# Output: {1, 2, 3}
my_set.add(2)
print(my_set)

# add multiple elements
# Output: {1, 2, 3, 4}
my_set.update([2, 3, 4])
print(my_set)

# add list and set
# Output: {1, 2, 3, 4, 5, 6, 8}
my_set.update([4, 5], {1, 6, 8})
print(my_set)

Вывод

{1, 3}
{1, 2, 3}
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6, 8}
<час>

Удаление элементов из набора

Конкретный элемент можно удалить из набора с помощью методов discard() и remove() .

Единственная разница между ними заключается в том, что discard() Функция оставляет набор неизменным, если элемент отсутствует в наборе. С другой стороны, remove() функция вызовет ошибку в таком условии (если элемент отсутствует в наборе).

Следующий пример проиллюстрирует это.

# Difference between discard() and remove()

# initialize my_set
my_set = {1, 3, 4, 5, 6}
print(my_set)

# discard an element
# Output: {1, 3, 5, 6}
my_set.discard(4)
print(my_set)

# remove an element
# Output: {1, 3, 5}
my_set.remove(6)
print(my_set)

# discard an element
# not present in my_set
# Output: {1, 3, 5}
my_set.discard(2)
print(my_set)

# remove an element
# not present in my_set
# you will get an error.
# Output: KeyError

my_set.remove(2)

Вывод

{1, 3, 4, 5, 6}
{1, 3, 5, 6}
{1, 3, 5}
{1, 3, 5}
Traceback (most recent call last):
  File "<string>", line 28, in <module>
KeyError: 2

Точно так же мы можем удалить и вернуть элемент, используя pop() метод.

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

Мы также можем удалить все элементы из набора с помощью clear() метод.

# initialize my_set
# Output: set of unique elements
my_set = set("HelloWorld")
print(my_set)

# pop an element
# Output: random element
print(my_set.pop())

# pop another element
my_set.pop()
print(my_set)

# clear my_set
# Output: set()
my_set.clear()
print(my_set)

print(my_set)

Вывод

{'H', 'l', 'r', 'W', 'o', 'd', 'e'}
H
{'r', 'W', 'o', 'd', 'e'}
set()
<час>

Операции набора Python

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

Рассмотрим следующие два множества для следующих операций.

>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}

Установить союз

<рисунок>

Союз A и Б представляет собой набор всех элементов из обоих наборов.

Объединение выполняется с помощью | оператор. То же самое можно сделать с помощью union() метод.

# Set union method
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use | operator
# Output: {1, 2, 3, 4, 5, 6, 7, 8}
print(A | B)

Вывод

{1, 2, 3, 4, 5, 6, 7, 8}

Попробуйте следующие примеры в оболочке Python.

# use union function
>>> A.union(B)
{1, 2, 3, 4, 5, 6, 7, 8}

# use union function on B
>>> B.union(A)
{1, 2, 3, 4, 5, 6, 7, 8}
<час>

Установить пересечение

<рисунок>

Пересечение A и Б это набор элементов, которые являются общими для обоих наборов.

Пересечение выполняется с использованием & оператор. То же самое можно сделать с помощью intersection() метод.

# Intersection of sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use & operator
# Output: {4, 5}
print(A & B)

Вывод

{4, 5}

Попробуйте следующие примеры в оболочке Python.

# use intersection function on A
>>> A.intersection(B)
{4, 5}

# use intersection function on B
>>> B.intersection(A)
{4, 5}
<час>

Установить разницу

<рисунок>

Отличие набора B из набора A (А - Б ) представляет собой набор элементов, которые есть только в A но не в B . Точно так же B - А это набор элементов в B но не в A .

Различие выполняется с использованием - оператор. То же самое можно сделать с помощью difference() метод.

# Difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use - operator on A
# Output: {1, 2, 3}
print(A - B)

Вывод

{1, 2, 3}

Попробуйте следующие примеры в оболочке Python.

# use difference function on A
>>> A.difference(B)
{1, 2, 3}

# use - operator on B
>>> B - A
{8, 6, 7}

# use difference function on B
>>> B.difference(A)
{8, 6, 7}
<час>

Установить симметричную разницу

<рисунок>

Симметричная разница A и Б представляет собой набор элементов в A и Б но не в обоих (исключая пересечение).

Симметричная разность выполняется с помощью ^ оператор. То же самое можно сделать с помощью метода symmetric_difference() .

# Symmetric difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

# use ^ operator
# Output: {1, 2, 3, 6, 7, 8}
print(A ^ B)

Вывод

{1, 2, 3, 6, 7, 8}

Попробуйте следующие примеры в оболочке Python.

# use symmetric_difference function on A
>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}

# use symmetric_difference function on B
>>> B.symmetric_difference(A)
{1, 2, 3, 6, 7, 8}
<час>

Другие методы набора Python

Существует множество методов установки, некоторые из которых мы уже использовали выше. Вот список всех методов, доступных для заданных объектов:

Метод Описание
добавить() Добавляет элемент в набор
очистить() Удаляет все элементы из набора
копировать() Возвращает копию набора
разница() Возвращает разницу двух или более наборов в виде нового набора
difference_update() Удаляет все элементы другого набора из этого набора
отбросить() Удаляет элемент из набора, если он является членом. (Ничего не делать, если элемент не установлен)
пересечение() Возвращает пересечение двух наборов как новый набор
intersection_update() Обновляет набор пересечением себя и другого
является непересекающимся() Возвращает True если два множества имеют нулевое пересечение
issubset() Возвращает True если другой набор содержит этот набор
issuperset() Возвращает True если этот набор содержит другой набор
поп() Удаляет и возвращает произвольный элемент набора. Поднимает KeyError если набор пуст
удалить() Удаляет элемент из множества. Если элемент не является членом, возникает KeyError
симметричная_разность() Возвращает симметричную разницу двух наборов в виде нового набора
symmetric_difference_update() Обновляет набор с симметричной разностью себя и другого
объединение() Возвращает объединение наборов в новый набор
обновление() Обновляет набор объединением себя и других
<час>

Другие операции с наборами

Установить тест на членство

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

# in keyword in a set
# initialize my_set
my_set = set("apple")

# check if 'a' is present
# Output: True
print('a' in my_set)

# check if 'p' is present
# Output: False
print('p' not in my_set)

Вывод

True
False
<час>

Итерация набора

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

>>> for letter in set("apple"):
...     print(letter)
...    
a
p
e
l
<час>

Встроенные функции с набором

Встроенные функции, такие как all() , any() , enumerate() , len() , max() , min() , sorted() , sum() и т. д. обычно используются с наборами для выполнения различных задач.

Функция Описание
все() Возвращает True если все элементы множества истинны (или если множество пусто).
любой() Возвращает True если какой-либо элемент множества истинен. Если набор пуст, возвращает False .
перечисление() Возвращает перечисляемый объект. Он содержит индекс и значение для всех элементов набора в виде пары.
len() Возвращает длину (количество элементов) в наборе.
макс() Возвращает самый большой элемент в наборе.
мин() Возвращает наименьший элемент в наборе.
отсортировано() Возвращает новый отсортированный список из элементов набора (сам набор не сортируется).
сумма() Возвращает сумму всех элементов в наборе.
<час>

Замороженный набор Python

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

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

Frozensets можно создавать с помощью функции Frozenset().

Этот тип данных поддерживает такие методы, как copy(). , difference() , intersection() , isdisjoint() , issubset() , issuperset() , symmetric_difference() и union() . Будучи неизменяемым, он не имеет методов, которые добавляют или удаляют элементы.

# Frozensets
# initialize A and B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

Попробуйте эти примеры в оболочке Python.

>>> A.isdisjoint(B)
False
>>> A.difference(B)
frozenset({1, 2})
>>> A | B
frozenset({1, 2, 3, 4, 5, 6})
>>> A.add(3)
...
AttributeError: 'frozenset' object has no attribute 'add'

Python

  1. Типы данных Python
  2. Операторы Python
  3. Оператор передачи Python
  4. Аргументы функции Python
  5. Словарь Питона
  6. Итераторы Python
  7. Замыкания Python
  8. Дата и время Python
  9. Python — Обзор
  10. Питон — Числа