У цьому посібнику ви дізнаєтеся все про набори 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), "Привіт")
Спробуйте також наступні приклади.
# 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) Відстеження (останній дзвінок останній): Файл "", рядок 15, у my_set = (1, 2, (3, 4)) TypeError: unhashable type: 'список'
Створення порожнього набору трохи складно.
Порожні фігурні дужки ()
дозволять створити порожній словник на 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))
Вихідні дані
Зміна набору в 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) Відстеження (останній останній дзвінок): Файл "", рядок 28, у 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 і B - це сукупність усіх елементів обох множин.
Об'єднання виконується за допомогою |
оператора. Те саме можна зробити за допомогою 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)
Встановити перетин

Перетин А і В - це набір елементів, загальних для обох множин.
Перетин виконується за допомогою &
оператора. Те саме можна зробити за допомогою 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) - це сукупність елементів, які є лише в A, але не в B. Аналогічно, B - A - це набір елементів у 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 і B - це набір елементів в A і B, але не в обох (за винятком перетину).
Симетрична різниця виконується за допомогою ^
оператора. Те саме можна зробити за допомогою методу 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
There are many set methods, some of which we have already used above. Here is a list of all the methods that are available with the set objects:
Method | Description |
---|---|
add() | Adds an element to the set |
clear() | Removes all elements from the set |
copy() | Returns a copy of the set |
difference() | Returns the difference of two or more sets as a new set |
difference_update() | Removes all elements of another set from this set |
discard() | Removes an element from the set if it is a member. (Do nothing if the element is not in set) |
intersection() | Returns the intersection of two sets as a new set |
intersection_update() | Updates the set with the intersection of itself and another |
isdisjoint() | Returns True if two sets have a null intersection |
issubset() | Returns True if another set contains this set |
issuperset() | Returns True if this set contains another set |
pop() | Removes and returns an arbitrary set element. Raises KeyError if the set is empty |
remove() | Removes an element from the set. If the element is not a member, raises a KeyError |
symmetric_difference() | Returns the symmetric difference of two sets as a new set |
symmetric_difference_update() | Updates a set with the symmetric difference of itself and another |
union() | Returns the union of sets in a new set |
update() | Updates the set with the union of itself and others |
Other Set Operations
Set Membership Test
We can test if an item exists in a set or not, using the in
keyword.
# 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)
Output
True False
Iterating Through a Set
We can iterate through each item in a set using a for
loop.
>>> for letter in set("apple"):… print(letter)… a p e l
Built-in Functions with Set
Built-in functions like all()
, any()
, enumerate()
, len()
, max()
, min()
, sorted()
, sum()
etc. are commonly used with sets to perform different tasks.
Function | Description |
---|---|
all() | Returns True if all elements of the set are true (or if the set is empty). |
any() | Returns True if any element of the set is true. If the set is empty, returns False . |
enumerate() | Returns an enumerate object. It contains the index and value for all the items of the set as a pair. |
len() | Returns the length (the number of items) in the set. |
max() | Returns the largest item in the set. |
min() | Returns the smallest item in the set. |
sorted() | Returns a new sorted list from elements in the set(does not sort the set itself). |
sum() | Returns the sum of all elements in the set. |
Python Frozenset
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'