set 是一个无序不重复元素集,还有个frozenset 类型(顾明思议,就是不可改变元素的集合);
基本功能包括关系测试和消除重复元素;set支持& | - (交、并、差集) 等数学运算
set 赋值:非空集合由{}标识,逗号隔开元素; 注意,空集合表示为 set() 而不是 {} (这是dict);python 会对set自动去除重复
1 s = {} # 注意这是 dict类型 2 print(type(s)) 3 s = set() # 空集合表示方法 4 print(type(s)) 5 s = {1,1.0} 6 print(s) # 输出{1.0},可去重 int float类型不区分,输出float 7 s = [1,2,1,2,1,1,3] 8 s = set(s) # 强制转换成 set 9 print(s) # 同样去重了
同 list 相似,set 也有简单操作,如下:
1 s = {1,2,1,2,1,1,3,0} 2 print(s,len(s)) # len(s) 返回了set包含元素的个数(去重) 3 print((1.0 in s),(3 in s),(True in s),(False in s)) # 测试是否包含元素,注意0可以对应False,1可以对应True 4 print(True not in s)
表示法: & | - ; 分别表示交集、并集、及非(具体意思请百度),无对应结果返回空集合,即 set() 示例如下:
1 a = {0,1,2} 2 b = {1,2,3} 3 print(a&b) # 交集 4 print(a|b) # 并集 5 print(a-b) # a差b 6 print(b-a) # b差a 7 a = {0,1,2} 8 b = {3,4,5} 9 print(a&b) # set()
一些函数也可作交、并、差运算,详细参见 python list、set 相关参考
s.add(elem) 增加;.remove(elem) .discard(elem) .pop() 删除;s.clear() 清空;详见下面实例
1 s = {0,1,2} 2 s.add(4) # .add(elem) 3 s.add(4.0) 4 s.add("4") 5 print(s) 6 s.remove(0) # .remove(elem) 去除现有元素,如不存在,会 raise error 7 print(s) 8 # s.remove(0) # 报错 9 s = {0,1,2} 10 s.discard(0) # .discard(elem) 去除现有元素,如不存在,不会报错 11 print(s) 12 s.discard(4) # 不会报错 13 s = {"a","b","c"} 14 print(s.pop(),s) # 删除一个不确定的元素,并 return 该元素,若集合为空,会 raise error 15 s = {1,2,3} 16 print(s.pop()) # 数字类型好像每次都会pop出最小的1 17 s = {1,2,3,"b","c"} 18 print(s.pop()) # pop出不确定的非数字,或者最小的数字1 19 s.clear() 20 print(s) # 清空