1 1 # 集合-set 2 2 # 集合是高中的要给概念 3 3 # 一堆确定的无序的唯一的数据, 集合中的每一个数据成为一个元素 4 4 5 5 # 集合的定义 6 6 s = set() 7 7 print(type(s)) 8 8 print(s) 9 9 10 10 # 此时大括号中一定要有值, 否则定义出的是要给dict 11 11 s = {1, 2, 3, 4, 5, 6} 12 12 print(type(s)) 13 13 print(s) 14 14 15 15 # 如果只是用大括号定义,则定义的是要给dict类型 16 16 d = {} 17 17 print(type(d)) 18 18 print(d) 19 19 20 20 21 21 ::: 22 22 <class 'set'> 23 23 set() 24 24 <class 'set'> 25 25 {1, 2, 3, 4, 5, 6} 26 26 <class 'dict'> 27 27 {}
1 # 集合的特征 2 # 集合内数据无序, 即无法使用索引和分片 3 # 集合内部数据元素具有唯一性, 可以用来排斥重复数据 4 # 集合内数据, str, int, float, tuple, 集合等, 即内部只能放置可哈希数据 5 6 # 集合序列操作 7 # 成员检查 8 # in, not in 9 s = {4, 5, "i", "love", "xj"} 10 print(s) 11 if "love" in s: 12 print("爱呀") 13 if "ni" not in s: 14 print("挨个锤子") 15 16 # 集合遍历操作 17 # for 循环 18 s = {4, 5, "i", "love", "xj"} 19 print(s) 20 for i in s: 21 print(type(i), end=" ") 22 print() 23 # 带有元组的集合遍历 24 s = {(1, 2, 3), ("i", "love", "xj"), (4, 5, 6)} 25 print(s) 26 for k, m, n in s: 27 print(k, "--", m, "--", n) 28 29 for k in s: 30 print(k) 31 32 33 # 集合的内涵 34 # 以下集合会在初始化后自动过滤重复元素 35 s = {23, 223, 545, 3, 1, 2, 3, 4, 3, 2, 3, 1, 2, 4, 3} 36 print(s) 37 38 # 普通集合内涵 39 ss = {i for i in s} 40 print(ss) 41 42 # 带条件的集合内涵 43 # 保留偶数 44 ss = {i for i in s if i % 2 == 0} 45 print(ss) 46 47 48 # 多循环的集合内涵 49 s1 = {1, 2, 3, 4} 50 s2 = {"i", "love", "xj"} 51 52 s = {m*n for m in s1 for n in s2 if m == 3} 53 print(s) 54 55 56 # 集合函数/关于集合的函数 57 # len, max, min, 跟其他基本一致 58 s = {43, 23, 56, 223, 4, 2, 1222, 4, 323, 1} 59 print(len(s)) 60 print(max(s)) 61 print(min(s)) 62 63 # set:生成一个集合 64 list1 = [1, 2, 3, 4, 3, 23, 1, 2, 3, 4] 65 s = set(list1) 66 print(s) 67 68 # add:向集合那内添加元素 69 s = {1, 2, 3} 70 s.add(334) 71 print(s) 72 73 # clear 74 s = {1, 2, 3, 4, 5} 75 print(id(s)) 76 s.clear() 77 print(id(s)) 78 # 结果表明clear函数是原地清空数据 79 80 # copy:拷贝 81 # remove:移除指定的值 82 83 84 ::: 85 {4, 5, 'i', 'love', 'xj'} 86 爱呀 87 挨个锤子 88 {4, 5, 'i', 'love', 'xj'} 89 <class 'int'> <class 'int'> <class 'str'> <class 'str'> <class 'str'> 90 {('i', 'love', 'xj'), (4, 5, 6), (1, 2, 3)} 91 i -- love -- xj 92 4 -- 5 -- 6 93 1 -- 2 -- 3 94 ('i', 'love', 'xj') 95 (4, 5, 6) 96 (1, 2, 3) 97 {545, 1, 3, 2, 4, 23, 223} 98 {545, 2, 3, 4, 1, 23, 223} 99 {2, 4} 100 {'xjxjxj', 'lovelovelove', 'iii'} 101 9 102 1222 103 1 104 {1, 2, 3, 4, 23} 105 {1, 2, 3, 334} 106 1648740500648 107 1648740500648
1 接上面内容 2 # copy:拷贝 3 # remove:移除指定的值 4 s = {1, 2, 3, 4, 5} 5 s.remove(4) 6 print(s) 7 s.discard(1) 8 print(s) 9 print("*" * 20) 10 s.discard(10) 11 print(s) 12 # s.remove(10) # 为啥remove不存在的之会报keyerror 13 print(s) 14 15 16 # pop随机移除一个元素 17 s = {3, 2, 1, 5, 6, 4, 7} 18 d = s.pop() 19 print(d) 20 print(s) 21 d = s.pop() 22 print(d) 23 print(s) 24 25 thisset = set(("Google", "Runoob", "Taobao", "Facebook")) 26 print(thisset) 27 pop_data = thisset.pop() 28 print(pop_data) 29 print(thisset) 30 pop_data = thisset.pop() 31 print(pop_data) 32 print(thisset) 33 34 35 ::: 36 {1, 2, 3, 5} 37 {2, 3, 5} 38 ******************** 39 {2, 3, 5} 40 {2, 3, 5} 41 1 42 {2, 3, 4, 5, 6, 7} 43 2 44 {3, 4, 5, 6, 7} 45 {'Google', 'Facebook', 'Runoob', 'Taobao'} 46 Google 47 {'Facebook', 'Runoob', 'Taobao'} 48 Facebook 49 {'Runoob', 'Taobao'}
# 集合函数 # intersection :交集 # difference :差集 # union :并集 # issubset :检查一个集合是否为另一个子集 # issuperset :检查一个集合是偶为另一个超集 s1 = {1, 2, 3, 4, 5, 6} s2 = {5, 6, 7, 8, 9} s_1 = s1.intersection(s2) print(s_1) s_2 = s1.difference(s2) print(s_2) s_3 = s1.issubset(s2) print(s_3) # frozen:冰冻集合 # 冰冻集合就是不可以进行任何修改的集合 # frozenset是一种特殊集合 # 创建 s = frozenset() print(type(s)) print(s) ::: {5, 6} {1, 2, 3, 4} False <class 'frozenset'> frozenset()