集合的定义:
集合成为set和其他语言类似,是一个无序不重复的元素集。
功能包括:关系的测试、消除重复的元素;集合还支持 交集、并集、差集、对称差集
备注:由于集合是无序的,所以不支持 索引、分片和其它序列的操作
下面我们来做一下实操:
定义一个集合
#集合 s = {3,2,5,8,9} #直接定义 s1 = set([1,3,4,6,7]) #用set函数来定义 print(s) print(s1) 输出: C:Python35python.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:Python35python.exe D:/linux/python/all_test/总练习.py # {2, 3, 5, 8, 9, 10} #这里我们可以看出添加了一个10的元素并去重了 # {1, 3, 4, 6, 7} s3 = frozenset(s1) #使用此函数是把集合s1封闭了并赋值给s3 print(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 <module> # s3.aad(10) # AttributeError: 'frozenset' object has no attribute 'aad' #这里提示不能添加,因为s3封闭了 print(s) s.update([11,12]) #一次性增加两个元素 print(s) # 输出: # C:Python35python.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:Python35python.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:Python35python.exe D:/linux/python/all_test/总练习.py # 5
集合的in和not in
#集合 s = {3,2,5,8,9,9,8} #直接定义,这里我们定义的有重复元素 print(3 in s) #在s里返回True print(1 in s) #不在返回Flase print(3 not in s) #不在返回True在返回Flase print(1 not in s) #不在返回True在返回Flase # 输出: # C:Python35python.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:Python35python.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:Python35python.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:Python35python.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:Python35python.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:Python35python.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:Python35python.exe D:/linux/python/all_test/总练习.py # {8, 9, 2, 3, 5} # {8, 9, 2, 3, 5} # 1763954978600 #指向的内存不同 # 1763955004360
这里集合就说完了