day07

1、集合的介紹

  集合:可變的數據類型,他裏面的元素必須是不可變的數據類型,無序,不重複。

1.1、集合是如何定義的

《day07》
《day07》

 1 #集合的定義方式1
 2 set1 = set({1,2,3})
 3 #集合的定義方式2
 4 set2 = {1,2,3}
 5 print(set1,set2)
 6 
 7 #這種會報錯,因為集合中的元素必須是可哈希的,也即是不可變的
 8 '''
 9 set3 = {1,[2,3],{4,5}}
10 print(set3)
11 '''

集合的定義

1.2、集合的增刪查

  集合沒有改,因為集合中的元素是不可變的。

《day07》
《day07》

 1 # 集合的增加
 2 set4 = {'a','b','c','d'}
 3 
 4 # add()
 5 set4.add('e')
 6 print(set4)
 7 # result:{'b', 'a', 'd', 'e', 'c'}---驗證了集合的無序
 8 
 9 # update()---類似於extend,迭代添加元素
10 set4.update('fgh')
11 print(set4)
12 # result:{'d', 'g', 'a', 'c', 'e', 'h', 'b', 'f'}

集合的增
《day07》
《day07》

 1 # 集合的刪除
 2 
 3 # 1、pop()---隨機刪除
 4 set5 = {'a','b','c','d'}
 5 set5.pop()
 6 print(set5,set5.pop())# 刪除了兩次,且其有返回值。
 7 # result:{'b', 'd'} a
 8 
 9 # 2、remove()---按元素去刪
10 set6 = {'a','b','c','d'}
11 set6.remove('a')
12 print(set6)
13 # result:{'d', 'b', 'c'}
14 
15 # 3、clear()
16 set7 = {'a','b','c','d'}
17 set7.clear()
18 print(set7)
19 # result:set()
20 
21 # 4、del
22 '''
23 set8 = {'a','b','c','d'}
24 del set8
25 print(set8)
26 '''
27 # result:NameError: name 'set8' is not defined

集合的刪
《day07》
《day07》

1 # 集合的查
2 set9 = {'a','b','c','d'}
3 for i in set9:
4     print(i)
5 # result:
6 # b
7 # c
8 # a
9 # d

集合的查

1.3、集合的交集、反交集、並集、差集、子集、超集。

《day07》
《day07》

1 # 集合的交集
2 set1 = {1,2,3,4,5}
3 set2 = {4,5,6,7,8}
4 print(set1 & set2)
5 # result:{4,5}
6 print(set1.intersection(set2))
7 # result:{4,5}

交集
《day07》
《day07》

1 # 集合的反交集
2 set1 = {1,2,3,4,5}
3 set2 = {4,5,6,7,8}
4 print(set1 ^ set2)
5 # result:{1, 2, 3, 6, 7, 8}
6 print(set1.symmetric_difference(set2))
7 # result:{1, 2, 3, 6, 7, 8}

反交集
《day07》
《day07》

1 # 集合的並集
2 set1 = {1,2,3,4,5}
3 set2 = {4,5,6,7,8}
4 print(set1 | set2)
5 # result:{1, 2, 3, 4, 5, 6, 7, 8}
6 print(set1.union(set2))
7 # result:{1, 2, 3, 4, 5, 6, 7, 8}

並集
《day07》
《day07》

1 # 集合的差集
2 set1 = {1,2,3,4,5}
3 set2 = {4,5,6,7,8}
4 print(set1 - set2)
5 # result:{1, 2, 3}
6 print(set1.difference(set2))
7 # result:{1, 2, 3}

差集
《day07》
《day07》

 1 # 集合的子集和超集
 2 set1 = {1,2,3}
 3 set2 = {1,2,3,4,5,6}
 4 print(set1 < set2)# 子集
 5 # result:True
 6 print(set1.issubset(set2))# 子集
 7 # result:True
 8 print(set2 > set1)# 超集
 9 # result:True
10 print(set2.issuperset(set1))# 超集
11 # result:True

子集和超集

1.4、集合的一個簡單小用途,以及不可變集合frozenset的介紹

《day07》
《day07》

1 # 集合的用途之一
2 # 將以下列表的重複元素去掉
3 lst = [1,2,3,4,3,1,9,8]
4 print(set(lst))
5 # result:{1, 2, 3, 4, 8, 9}

集合的用途之一
《day07》
《day07》

1 # set是可變集合,frozenset是不可變集合
2 set1 = set('hello')
3 print(set1,type(set1))
4 # result:{'h', 'e', 'l', 'o'} <class 'set'>
5 set2 = frozenset('hello')
6 print(set2,type(set2))
7 # result:frozenset({'e', 'o', 'l', 'h'}) <class 'frozenset'>

frozenset

 

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *