集合Set數據類型,本身就是一個集合。它是無序不重複元素的集合。
什麼是Set?
與數學中的集合類似,Python中的集合數據類型指的是一系列值(元素)組成的一個集體。我們所有人類是一個集合。中國人是一個集合。
數學中集合的特性:
確定性:一個對象能夠確定是不是屬於一個集合,如很小的數無法構成一個集合,因為具有不確定性。互異性:即集合中任意兩個對象都是不同的。也就是集合中不存在重複的對象。無序性:{a, b, c}與{b, c, a}是同一個集合。純粹性:一個集合中的所有對象必須具備一個共同的屬於該集合的特徵。完備性:一個集合必須包含所有符合集合共同特徵的對象。Python中的集合
使用大括號 {} 或者 set() 函數來創建一個集合。注意:創建一個空集合必須使用 set(),因為 {} 用來創建一個空字典。初始化一個集合必須用List、Tuple、String。
特性
互異性:不存在重複元素。無序性。因其無序性,集合不支持下標索引以及切片來進行取值、修改值、刪除值操作
定義一個集合
example = set([1, 2, 3]) # 用列表初始化集合print(example)# {1, 2, 3}注意,傳入的參數[1, 2, 3]是一個list,而顯示的{1, 2, 3}只是告訴你這個set內部有1,2,3這3個元素,顯示的順序也不表示set是有序的。
自動過濾重複元素
set1 = set(['apple', 'banana', 'apple', 'pear', 'orange', 'banana'])print(set1)# 將自動過濾重複元素# {'apple', 'pear', 'orange', 'banana'}Set的基本操作
基本運算
與數學中的集合操作類似,可做併集、交集等運算。
in和not in:成員運算符。判斷元素與集合的包含與不包含關係。==和!=:判斷等於與不等於。<:判斷絕對子集關係。<=:判斷非絕對子集關係。>:判斷絕對超集關係。>=:判斷非絕對超集關係。&:求交集。|:求併集。^:求兩個集合共同元素之外的所有元素組成集合。解釋:集合a,集合b。b是a的子集,即b包含於a;如果b不等於(!=)a,則b是a的絕對子集,反過來a是b的絕對超集。
list = [1314, 520, 'my love', 'Hi', 'Python']fir_set = set(list)sec_set = set([520, 'Hi', 3.1415, 88])# in and not inprint(520in fir_set)# IDLE中輸出True# == 判斷兩個集合的包含關係print(fir_set == sec_set)# False# < 判斷兩個集合的包含關係print({1314, 'Hi'} < fir_set)# True# >= 判斷兩個集合的包含關係print(fir_set >= sec_set)# False# & 求兩個集合都包含的元素print(fir_set & sec_set)# {520, 'Hi'}# | 求兩個集合所包含的所有元素,自動去除重複元素print(fir_set | sec_set)# {1314, 'Hi', 520, 3.1415, 'Python', 88, 'my love'}# ^ 求兩個集合共同元素之外的所有元素print(fir_set ^ sec_set)# {1314, 3.1415, 88, 'my love', 'Python'}內置函數
add():增加新的元素,新增元素的位置隨機。update(seq):用序列(String、List、Tuple)更新集合,序列中的每個元素都被添加到集合中。remove(element):刪除集合中的元素。len(set):求集合中元素個數。clear():清空集合中的元素,集合變為空集合。s = {133, '522', '你好', 568}print(type(s)) # <class 'set'> 表示是集合類型s.add(1000)print(s)# {'522', '你好', 133, 1000, 568}s.update((12, 'Hi'))print(s)# {133, '你好', 1000, 'Hi', '522', 12, 568}s.remove(568)print(s)# {133, 'Hi', '522', 1000, 12, '你好'}print(len(s))# 6s.clear()print(s)# set()紙上得來終覺淺,絕知此事要躬行。