集合(set)的定义方式
集合的定义一般是由一对大括号{}括起的若干元素
set1 = {1, 2, 3}
print(set1)
print(type(set1))
# {1, 2, 3}
# <class 'set'>
需要注意的是,空集合的定义方式不能仅用一对空大括号进行定义
set1 = {}
print(set1)
print(type(set1))
# {}
# <class 'dict'>
可以看到,这里的大括号被识别成了空字典的定义方式,所以若要定义空集合,可以使用set()进行定义
set1 = set()
print(set1)
print(type(set1))
# set()
# <class 'set'>
集合的特性
集合具有无序性和互异性(集合中同样值的元素只能出现一次),以下为样例展示
set1 = {"asda", "gswt", "jigjh"}
print(set1)
# {'jigjh', 'asda', 'gswt'}
可见这个字符串集合的输出顺序是随机的
set1 = {4, 8, 1, 9, 0}
set2 = {9, 0, 5, 1, 3}
print(set1)
print(set2)
# {0, 1, 4, 8, 9}
# {0, 1, 3, 5, 9}
由上面的代码可以看出,这两个整型集合输出的顺序都是从小到大排列的,所以其实集合内部有一定的排序规则,但宏观上来看还是无序的,因为无序,所以我们也不能使用下标进行索引
set1 = {4, 8, 1, 9, 0}
print(set1[0])
# Traceback (most recent call last):
# File "D:\Pythonproject\teach_day_01\demo01.py", line 2, in <module>
# print(set1[0])
# ~~~~^^^
# TypeError: 'set' object is not subscriptable
可以看到'set' object is not subscriptable,这里的subscriptable是无法进行下标索引的意思,subscript是“下标”的意思
而集合的互异性也可以理解为集合会默认去重
set1 = {4, 8, 1, 1, 9, 9, 0}
print(set1)
# {0, 1, 4, 8, 9}
注意,这里的去重时,同样值的元素,会保留先出现的那个,需要注意,在进行判断时,布尔类型的True和False会被视为1和0
set1 = {True, 1, 0, False}
print(set1)
# {0, True}
可以看到,集合中最后保留的是0和True,这是因为在定义时,True先于1出现,0先于False出现,所以最后保留的是这两个
集合常用方法
集合中添加元素的常用方法为add(),参数为要添加的元素
set1 = {1, 2, 3}
set1.add(4)
print(set1)
# {1, 2, 3, 4}
集合中删除元素的方法一般有以下几个
remove()
remove()函数的作用为删除指定元素,参数为要删除的元素
set1 = {1, 2, 3}
set1.remove(3)
print(set1)
# {1, 2}
注意remove()在删除失败的时候会报错
set1 = {1, 2, 3}
set1.remove(4)
print(set1)
# Traceback (most recent call last):
# File "D:\Pythonproject\teach_day_01\demo01.py", line 2, in <module>
# set1.remove(4)
# KeyError: 4
discard()
discard()函数的作用为删除指定元素,参数为要删除的元素
set1 = {1, 2, 3}
set1.discard(3)
print(set1)
# {1, 2}
与remove()不同的是discard()在删除失败的时候不会报错
set1 = {1, 2, 3}
set1.discard(4)
print(set1)
# {1, 2, 3}
pop()
pop()函数的作用是随机删除一个元素并且会返回删除元素的值
set1 = {1, 2, 3}
print(set1.pop())
print(set1)
# 1
# {2, 3}
与remove()相同,若删除失败会报错
set1 = {}
set1.pop()
print(set1)
# Traceback (most recent call last):
# File "D:\Pythonproject\teach_day_01\demo01.py", line 2, in <module>
# set1.pop()
# TypeError: pop expected at least 1 argument, got 0
clear()
clear()函数的作用是清空整个集合
set1 = {1, 2, 3}
set1.clear()
print(set1)
# set()