Множество (set) в python - "контейнер", содержащий не повторяющиеся элементы в случайном порядке и создается он присвоением значений через запятую и заключением их в фигурные скобки:
phonetic-set = { 'Alpha' , 'Bravo' , 'Charlie' }
Нельзя обратиться к отдельному элементу множества, используя имя множества и квадратные скобки, содержащие индекс. Вместо этого у множеств существуют методы для работы с ними.
Метод множества |
Описание |
set.add(x) |
Добавляет элемент х в множество |
set.update(x,y,z) |
Добавляет несколько элементов в множество |
set.copy() |
Возвращает копию множества |
set.pop() |
Удаляет один элемент из множества случайным образом |
set.discard( i ) |
Удаляет из множества элемент i |
set1.intersection(set2) |
Возвращает элементы, принадлежащие обоим множествам |
set1.difference(set2) |
Возвращает элемента из множества set1 , которых нет в set2 |
pt = { 9 , 4 , 3 }
print(pt) #{9, 3, 4}
pt.add(777)
print(pt) #{9, 3, 4, 777}
pt2 = {33,66,22}
pt.update(pt2)
print(pt) #{33, 66, 3, 4, 777, 22, 9}
pt.pop()
print(pt) #{66, 3, 4, 777, 22, 9}
pt.discard(66)
print(pt) #{3, 4, 777, 22, 9}
print(pt.intersection(pt2)) #{22}
print(pt.difference(pt2)) #{777, 3, 4, 9}
Для того чтобы определить принадлежность той или иной структуры данных к классу списков, применяется функция type(), а чтобы найти значение в этом списке, используется встроенный оператор вхождения in.
numbersList = [ 1, 5, 33, -1, 2 ]
animalsTuple = ( 'волк' , 'лиса' , 'лось' )
colorsSet = {'красный', 'белый', 'зеленый'}
print( 'Список:' , numbersList , 'Длина:' , len( numbersList ) )
#Список: [1, 5, 33, -1, 2] Длина: 5
print( type( numbersList ) )
#<class 'list'>
print( 'Кортеж:' , animalsTuple , 'Длина:' , len( animalsTuple ) )
#Кортеж: ('волк', 'лиса', 'лось') Длина: 3
print( type( animalsTuple ) )
#<class 'tuple'>
print( 'Множество:' , colorsSet , 'Длина:' , len( colorsSet ) )
#Множество: {'белый', 'зеленый', 'красный'} Длина: 3
print( type( colorsSet ) )
#<class 'set'>
#Добавляем элемент в множество colorsSet
colorsSet.add('ЧЕРНЫЙ')
print( 'Множество:' , colorsSet , 'Длина:' , len( colorsSet ) )
#Множество: {'белый', 'зеленый', 'ЧЕРНЫЙ', 'красный'} Длина: 4
Множество может быть создано также, используя конструктор set(), в котором в скобках заключен список. Если функции set передать в качестве параметра список, строку или кортеж, то она вернёт множество, составленное из элементов списка, строки, кортежа.
a = set([1, 4, 6, 7])
print(a) #{1, 4, 6, 7}
a.add(5)
print(a) #{1, 4, 5, 6, 7}
frozenset
Единственное отличие set от frozenset заключается в том, что set - изменяемый тип данных, а frozenset - нет.
*Листинг 21*
a = frozenset([1, 4, 6, 7])
b = set([1, 4, 6, 7])
print(type(a)) #<class 'frozenset'>
b.add(5); print(b)
#a.add(5) #AttributeError: 'frozenset' object has no attribute 'add'