Набір 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), "Привіт")

Спробуйте також наступні приклади.

 # 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)

Встановити Союз

Встановити Union у Python

Об'єднання 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)

Встановити перетин

Встановити перетин у Python

Перетин А і В - це набір елементів, загальних для обох множин.

Перетин виконується за допомогою &оператора. Те саме можна зробити за допомогою 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)

Встановити різницю

Встановити різницю в Python

Відмінність множини 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)

Встановити симетричну різницю

Встановити симетричну різницю в Python

Симетрична різниця 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'

Цікаві статті...