1 #集合
2 #一、概念:参照高中数学,一堆确定的无序的唯一数据,没有重复
3 #1、创建set两种方法
4 s = set()
5 print(type(s),s)
6 s = {1, 2, 3} #大括号内一定要有值
7 print(type(s),s)
8 #二、集合特征
9 #1、因为集合内部数据无序,所以无法使用索引和切片
10 #2、合内部数据元素具有唯一性,可排除重复数据
11 #3、内部的元素可以是str、int、float、tuple、冰冻集合等,凡是可以哈希的数据都可以
12 #三、集合的序列操作
13 #1、成员检测:in、note in
14 s = {1, 2, "love", 4, "dadada","i"}
15 print(s)
16 if "love" in s:
17 print("这是珍爱")
18 if "xiaomei" not in s:
19 print("都是假的")
20 #四、集合的遍历
21 #1、for循环遍历
22 for i in s:
23 print(i, end=" ")
24 print()
25 #2、带有元祖的循环遍历
26 s = {(1, 2, 3), ("i", "love", "xxx"), (4, 5, 6)}
27 for k,m,n in s:
28 print(k, "---", m, "---", n)
29 for i in s:
30 print(i)
31 #3、集合的内涵
32 #1、普通集合内涵
33 s = {1, 2, 3, 1, 2, 4} #初始化自动去重
34 print(s)
35 ss = {i for i in s}
36 print(ss)
37 #2、带条件的集合内涵
38 sss = {i for i in s if i % 2 == 0}
39 print(sss)
40 #3、多重循环的集合内涵
41 s1 = {1, 2, 3, 4}
42 s2 = {"i", "love", "www"}
43 s = {m*n for m in s2 for n in s1}
44 print(s)
45 s = {m*n for m in s2 for n in s1 if n == 2} #复制一次s2的每个值
46 print(s)
47 #五、set可以使用的内置函数
48 #len、max、min
49 s = {1, 2, 1, 3}
50 print(len(s),max(s),min(s))
51 #set,用其他数据生成集合
52 l = [1, 2, 3]
53 s = set(l)
54 print(s)
55 #add,向集合内添加元素
56 s = {1, 2}
57 s.add(111)
58 print(s)
59 #clear,清空自身元素
60 s.clear()
61 print(s)
62 #copy
63 s = {1, 2}
64 ss = s.copy()
65 print(ss)
66 #remove,原set上移除指定值,如果找不到值,会报错
67 s.remove(2)
68 print(s)
69 #discard,原set上移除指定值,如果找不到值,不会报错
70 s.discard(100)
71 print(s)
72 #pop,随机弹出一个元素
73 s = [1, 2, 3]
74 d = s.pop()
75 print(d,s)
76 '''
77 打印如下:
78 <class 'set'> set()
79 <class 'set'> {1, 2, 3}
80 {1, 2, 4, 'love', 'dadada', 'i'}
81 这是珍爱
82 都是假的
83 1 2 4 love dadada i
84 i --- love --- xxx
85 4 --- 5 --- 6
86 1 --- 2 --- 3
87 ('i', 'love', 'xxx')
88 (4, 5, 6)
89 (1, 2, 3)
90 {1, 2, 3, 4}
91 {1, 2, 3, 4}
92 {2, 4}
93 {'wwwwww', 'lovelovelovelove', 'wwwwwwwww', 'iiii', 'www', 'love', 'lovelove', 'wwwwwwwwwwww', 'ii', 'lovelovelove', 'i', 'iii'}
94 {'wwwwww', 'lovelove', 'ii'}
95 3 3 1
96 {1, 2, 3}
97 {1, 2, 111}
98 set()
99 {1, 2}
100 {1}
101 {1}
102 3 [1, 2]
103 '''
1 #集合的函数:交叉并补
2 #intersection,交集,相交的那块
3 #difference,差集,去掉相交的那块求剩下的
4 #union,并集,把二者去重后合起来
5 #issubset,检查一个集合是不是另一个集合的子集
6 #issuperset,检查一个集合是否是另一个集合的超集
7 s1 = {1, 2, 3, 4}
8 s2 = {3, 4, 5, 6}
9 s_1 = s1.intersection(s2)
10 print(s_1)
11 s_2 = s1.difference(s2)
12 print(s_2)
13 s_3 = s1.union(s2)
14 print(s_3)
15 #集合的数学操作
16 s1 = {1, 2, 3, 4}
17 s2 = {3, 4, 5, 6}
18 s_1 = s1 - s2 #相当于求差集操作
19 print(s_1)
20 #frozenset冰冻集合,一种特殊集合,不能进行修改,除此之外具有集合的所有特性
21 s = frozenset()
22 print(type(s),s)
23 '''
24 打印如下:
25 {3, 4}
26 {1, 2}
27 {1, 2, 3, 4, 5, 6}
28 {1, 2}
29 <class 'frozenset'> frozenset()
30 '''