您好,登錄后才能下訂單哦!
本篇內容主要講解“Python3集合set入門基礎知識點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python3集合set入門基礎知識點有哪些”吧!
集合(set)是一個無序的不重復元素序列。
可以使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
集合、是字典的表親{}并不是字典的特權
集合的特點:
1 具有唯一性2 不支持索引3 與字典相同,也是無序的
創建格式:
parame = {value01,value02,...}或者set(value)
創建方法
num1 = {1,2,3,4}num2 = set(['q','w','e','r'])print(num1,num2)num3 = [1,2,3,4,2,4,2,1]temp = num3.copy()temp = set(temp)print(temp)
實例
>>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}>>> print(basket) # 這里演示的是去重功能{'orange', 'banana', 'pear', 'apple'}>>> 'orange' in basket # 快速判斷元素是否在集合內True>>> 'crabgrass' in basketFalse>>> # 下面展示兩個集合間的運算....>>> a = set('abracadabra')>>> b = set('alacazam')>>> a{'a', 'r', 'b', 'c', 'd'}>>> a - b # 集合a中包含而集合b中不包含的元素{'r', 'd', 'b'}>>> a | b # 集合a或b中包含的所有元素{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}>>> a & b # 集合a和b中都包含了的元素{'a', 'c'}>>> a ^ b # 不同時包含于a和b的元素{'r', 'd', 'b', 'm', 'z', 'l'}
類似列表推導式,同樣集合支持集合推導式(Set comprehension):
>>>a = {x for x in 'abracadabra' if x not in 'abc'}>>> a{'r', 'd'}
集合的基本操作
1、添加元素
語法格式如下:
s.add( x )
將元素 x 添加到集合 s 中,如果元素已存在,則不進行任何操作。
>>>thisset = set(("Baidu", "jb51", "Taobao"))>>> thisset.add("Facebook")>>> print(thisset){'Facebook', 'Taobao', 'Baidu', 'jb51'}
輸出的內容都是隨機的沒有排序
還有一個方法,也可以添加元素,且參數可以是列表,元組,字典等,語法格式如下:
s.update( x )
x 可以有多個,用逗號分開。
>>>thisset = set(("Baidu", "Jb51", "Taobao"))>>> thisset.update({1,3})>>> print(thisset){1, 3, 'Baidu', 'Taobao', 'Jb51'}>>> thisset.update([1,4],[5,6])>>> print(thisset){1, 3, 4, 5, 6, 'Baidu', 'Taobao', 'Jb51'}>>>
2、移除元素
語法格式如下:
s.remove( x )
將元素 x 從集合 s 中移除,如果元素不存在,則會發生錯誤。
實例(Python 3.0+)
>>>thisset = set(("Baidu", "Jb51", "Taobao"))>>> thisset.remove("Taobao")>>> print(thisset){'Baidu', 'Jb51'}>>> thisset.remove("Facebook") # 不存在會發生錯誤Traceback (most recent call last): File "<stdin>", line 1, in <module>KeyError: 'Facebook'>>>
此外還有一個方法也是移除集合中的元素,且如果元素不存在,不會發生錯誤。格式如下所示:
s.discard( x )
實例(Python 3.0+)
>>>thisset = set(("Baidu", "Jb51", "Taobao"))>>> thisset.discard("Facebook") # 不存在不會發生錯誤>>> print(thisset){'Taobao', 'Baidu', 'Jb51'}
我們也可以設置隨機刪除集合中的一個元素,語法格式如下:
s.pop()
腳本模式實例(Python 3.0+)
thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))x = thisset.pop()print(x)
輸出結果:
$ python3 test.py
Jb51
多次執行測試結果都不一樣。
set 集合的 pop 方法會對集合進行無序的排列,然后將這個無序排列集合的左面第一個元素進行刪除。
3、計算集合元素個數
語法格式如下:
len(s)
計算集合 s 元素個數。
實例(Python 3.0+)
>>>thisset = set(("Baidu", "Jb51", "Taobao"))>>> len(thisset)3
4、清空集合
語法格式如下:
s.clear()
清空集合 s。
實例(Python 3.0+)
>>>thisset = set(("Baidu", "Jb51", "Taobao"))>>> thisset.clear()>>> print(thisset)set()
5、判斷元素是否在集合中存在
語法格式如下:
x in s
判斷元素 x 是否在集合 s 中,存在返回 True,不存在返回 False。
實例(Python 3.0+)
>>>thisset = set(("Baidu", "Jb51", "Taobao"))>>> "Jb51" in thissetTrue>>> "Facebook" in thissetFalse>>>
集合內置方法完整列表
add()為集合添加元素clear()移除集合中的所有元素copy()拷貝一個集合difference()返回多個集合的差集difference_update()移除集合中的元素,該元素在指定的集合也存在。discard()刪除集合中指定的元素intersection()返回集合的交集intersection_update()返回集合的交集。isdisjoint()判斷兩個集合是否包含相同的元素,如果沒有返回 True,否則返回 False。issubset()判斷指定集合是否為該方法參數集合的子集。issuperset()判斷該方法的參數集合是否為指定集合的子集pop()隨機移除元素remove()移除指定元素symmetric_difference()返回兩個集合中不重復的元素集合。symmetric_difference_update()移除當前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當前集合中。union()返回兩個集合的并集update()給集合添加元素
下面繼續為大家補充一些實例
s.update( "字符串" ) 與 s.update( {"字符串"} ) 含義不同:
s.update( {"字符串"} ) 將字符串添加到集合中,有重復的會忽略。s.update( "字符串" ) 將字符串拆分單個字符后,然后再一個個添加到集合中,有重復的會忽略。
>>> thisset = set(("Baidu", "Jb51", "Taobao"))>>> print(thisset){'Baidu', 'Jb51', 'Taobao'}>>> thisset.update({"Facebook"})>>> print(thisset){'Baidu', 'Jb51', 'Taobao', 'Facebook'}>>> thisset.update("Yahoo")>>> print(thisset){'h', 'o', 'Facebook', 'Baidu', 'Y', 'Jb51', 'Taobao', 'a'}>>>
set() 中參數注意事項
1.創建一個含有一個元素的集合
>>> my_set = set(('apple',))>>> my_set{'apple'}
2.創建一個含有多個元素的集合
>>> my_set = set(('apple','pear','banana'))>>> my_set{'apple', 'banana', 'pear'}
3.如無必要,不要寫成如下形式
>>> my_set = set('apple')>>> my_set{'l', 'e', 'p', 'a'}>>> my_set1 = set(('apple'))>>> my_set1{'l', 'e', 'p', 'a'}
集合用 set.pop() 方法刪除元素的不一樣的感想如下:
1、對于 python 中列表 list、tuple 類型中的元素,轉換集合是,會去掉重復的元素如下:
>>> list = [1,1,2,3,4,5,3,1,4,6,5]>>> set(list){1, 2, 3, 4, 5, 6}>>> tuple = (2,3,5,6,3,5,2,5)>>> set(tuple){2, 3, 5, 6}
2、集合對 list 和 tuple 具有排序(升序),舉例如下:
>>> set([9,4,5,2,6,7,1,8]){1, 2, 4, 5, 6, 7, 8, 9}>>> set([9,4,5,2,6,7,1,8]){1, 2, 4, 5, 6, 7, 8, 9}
3、集合的 set.pop() 的不同認為
有人認為 set.pop() 是隨機刪除集合中的一個元素、我在這里說句非也!對于是字典和字符轉換的集合是隨機刪除元素的。當集合是由列表和元組組成時、set.pop() 是從左邊刪除元素的如下:
列表實例:
set1 = set([9,4,5,2,6,7,1,8])print(set1)print(set1.pop())print(set1)
輸出結果:
{1, 2, 4, 5, 6, 7, 8, 9}1{2, 4, 5, 6, 7, 8, 9}
元組實例:
set1 = set((6,3,1,7,2,9,8,0))print(set1)print(set1.pop())print(set1)
輸出結果:
{0, 1, 2, 3, 6, 7, 8, 9}0{1, 2, 3, 6, 7, 8, 9}
>>> thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))>>> y=set({'python'})>>> print(y.union(thisset)){'python', 'Taobao', 'Baidu', 'Facebook', 'Jb51'}
輸出結果:
{'python', 'Baidu', 'Taobao', 'Facebook', 'Jb51'}
y 的集合里此時只含有一個元素 'python',而如果不加花括號時,y 的集合里含有'p','y','t','h','o','n'五個元素。
>>> thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))>>> y=set('python')>>> print(y.union(thisset)){'p', 'o', 'y', 'Taobao', 'h', 'Baidu', 'Facebook', 'Jb51', 'n', 't'}
也可以使用括號:
thisset = set(("Baidu", "Jb51", "Taobao", "Facebook"))y=set(('python','love'))print(y.union(thisset))
輸出結果:
{'Facebook', 'Jb51', 'Taobao', 'python', 'love', 'Baidu'}
但是當 y 的集合里只有一個字符串時,結果與不加花括號一樣。
列表的 sort 方法可以實現就地排序(無需創建新對象,字符串按首字母進行排序):
a=[1, 51, 31, -3, 10]a.sort()print(a)s=['a','ab','3e','z']s.sort()print(s)
輸出:
[-3, 1, 10, 31, 51]['3e', 'a', 'ab', 'z']
按集合中的字符長度進行排序:
a=[1, 51, 31, -3, 10]a.sort()print(a)b=['a','ab','3ae','zaaa','1']b.sort()print(b)c=['a','ab','3ae','zaaa','1']c.sort(key=len)print(c)
輸出:
[-3, 1, 10, 31, 51]['1', '3ae', 'a', 'ab', 'zaaa']['a', '1', 'ab', '3ae', 'zaaa']
下面是其他網友的補充圖文
集合也也也也是python內置的一種數據結構,它是一個無序且元素不重復的序列。這里有兩個關鍵詞一個是無序,這一點和字典是一樣的,另一個關鍵詞是元素不重復,這一點和字典的key(鍵)是一樣的。這么看來集合和字典還真像,事實上他們長的也很像:
集合和字典一樣也是用{}包起來的,那么問題來了,如果只寫一個{}那它是集合還是字典呢?
{}里沒有元素創建的是字典,那么問題又來了,空集合又該怎么創建呢?我們可以使用set()函數創建。既然集合已經創建出來了,接著就看看集合的一些用法吧。
1.往集合里增加元素:
集合的add函數可以往集合里添加一個元素,update可以更新一個或多個元素,其參數可以是列表、集合等等。
2.刪除集合里的元素。
要刪除集合中的元素方法還挺多的啊,不過那個pop函數是認真的嗎?隨機移除元素也太隨意了吧...
由于集合是無序的,所以沒辦法用下標來獲取集合的元素,也沒辦法像字典一樣通過key來獲取值。這就尷尬了。看來集合就像貔貅一樣只能存數據不能取數據。
3.集合的運算
交集和并集很好理解,差集是個相對的概念,集合1相對集合2差集和集合2相對集合1的差集是不一樣的,需要特別注意。所以對稱差集可以理解為非交集元素組成的那部分。
4.集合的包含關系
集合的幾種關系:相交/不相交 ,包含/不包含(相對而言)。isdisjoint函數是判斷不相交的,不相交才返回True。
到此,相信大家對“Python3集合set入門基礎知識點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。