集合的定义:
集合成为set和其他语言类似,是一个无序不重复的元素集。
功能包括:关系的测试、消除重复的元素;集合还支持 交集、并集、差集、对称差集
备注:由于集合是无序的,所以不支持 索引、分片和其它序列的操作
下面我们来做一下实操:
定义一个集合
#集合s = {3,2,5,8,9} #直接定义s1 = set([1,3,4,6,7]) #用set函数来定义print(s)print(s1)输出:C:\Python35\python.exe D:/linux/python/all_test/总练习.py{ 8, 9, 2, 3, 5} #集合的无序{1, 3, 4, 6, 7}
集合的操作
#集合s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素s1 = set([1,3,4,6,7]) #用set函数来定义s.add(10) #添加一个集合元素print(s)print(s1)# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# {2, 3, 5, 8, 9, 10} #这里我们可以看出添加了一个10的元素并去重了# {1, 3, 4, 6, 7}s3 = frozenset(s1) #使用此函数是把集合s1封闭了并赋值给s3print(s3)s3.aad(10)print(s3)# 输出:# {1, 3, 4, 6, 7}# Traceback (most recent call last):# frozenset({1, 3, 4, 6, 7})# File "D:/linux/python/all_test/总练习.py", line 25, in# s3.aad(10)# AttributeError: 'frozenset' object has no attribute 'aad' #这里提示不能添加,因为s3封闭了print(s)s.update([11,12]) #一次性增加两个元素print(s)# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# {2, 3, 5, 8, 9, 10}# {1, 3, 4, 6, 7}# frozenset({1, 3, 4, 6, 7})# {2, 3, 5, 8, 9, 10}# {2, 3, 5, 8, 9, 10, 11, 12} #一次性增加了两个元素
集合的元素删除
s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素print(s)s.remove(5) #删除一个集合元素print(s)# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# {8, 9, 2, 3, 5}# {8, 9, 2, 3} #我们可以看出少了5元素
集合的长度
#集合s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素print(len(s)) #备注会自动去掉重复的元素# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# 5
集合的in和not in
#集合s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素print(3 in s) #在s里返回Trueprint(1 in s) #不在返回Flaseprint(3 not in s) #不在返回True在返回Flaseprint(1 not in s) #不在返回True在返回Flase# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# True# False# False# True
集合的包含
#集合s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素s1 = set([1,2])s3 = {2,5}print(s1.issubset(s)) #测试是否 s1 中的每一个元素都在s 中,在为Ture不在为Flase print(s3.issubset(s)) #测试是否 s3 中的每一个元素都在s 中,在为Ture不在为Flase#也可以用s1 > s# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# False# True
集合的union(合集)
s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素s1 = set([1,2])s3 = {2,5,10}print(s.union(s1)) #返回一个新的 set 包含 s 和 s1 中的每一个元素,也就是合集print(s | s3)
# 输出: # C:\Python35\python.exe D:/linux/python/all_test/总练习.py # {1, 2, 3, 5, 8, 9} # {2, 3, 5, 8, 9, 10}
集合的inttersection(交集)
#集合s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素s1 = set([1,2])s3 = {2,5,10}print(s.intersection(s1)) #返回一个新的 set 包含 s 和 s1 中的公共元素,也就是交集print(s & s3) #返回一个新的 set 包含 s 和 s1 中的公共元素,也就是交集# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# {2}# {2, 5}
集合的difference
#集合s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素s1 = set([1,2])s3 = {2,5,10}print(s.difference(s1)) #返回一个新的 set 包含 s有则t 中没有的元素print(s - s3) #返回一个新的 set 包含 s有则t 中没有的元素# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# {8, 9, 3, 5}# {8, 9, 3}
集合的symmetric_difference
#集合s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素s1 = set([1,2])s3 = {2,5,10}print(s.symmetric_difference(s1)) #返回一个新的 set 包含 s有则s1 不重复的元素print(s ^ s3) #返回一个新的 set 包含 s有则s1 不重复的元素# 输出:# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# {1, 3, 5, 8, 9}# {8, 9, 10, 3}
集合的copy
s1 = s.copy() #set “s”的一个浅复制print(s) print(s1)print(id(s))print(id(s1))# C:\Python35\python.exe D:/linux/python/all_test/总练习.py# {8, 9, 2, 3, 5}# {8, 9, 2, 3, 5}# 1763954978600 #指向的内存不同# 1763955004360
这里集合就说完了