溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python中的set集合的詳細(xì)介紹

發(fā)布時(shí)間:2021-09-08 07:40:42 來(lái)源:億速云 閱讀:173 作者:chen 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Python中的set集合的詳細(xì)介紹”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Python中的set集合的詳細(xì)介紹”吧!

目錄
  • Python中的set集合

    • 一、集合是什么?

    • 二、set集合怎么用?

      • 1、創(chuàng)建set集合

      • 2、刪除set集合

      • 3、訪問(wèn)set集合元素

      • 4、刪除集合中的元素

      • 5、向集合中添加元素

    • 三、set集合的交并補(bǔ)

      • 1、交集

      • 2、并集

      • 3、差集

    • 四、set中的其他方法

      • 五、frozenset 集合

      Python中的set集合

      一、集合是什么?

      集合是什么呢?相信讀者朋友們哪怕是沒(méi)有用過(guò)集合這個(gè)數(shù)據(jù)類(lèi)型。也一定在數(shù)學(xué)課堂上聽(tīng)過(guò)集合這個(gè)名詞。數(shù)學(xué)中的集合是一個(gè)基本概念,說(shuō)白了一堆不重復(fù)的數(shù)字可以組成一個(gè)集合?;氐絇ython中集合的數(shù)據(jù)類(lèi)型,它可以用來(lái)存放多個(gè)不重復(fù)的數(shù)據(jù),并且這些數(shù)據(jù)的數(shù)據(jù)類(lèi)型是不可變類(lèi)型。這些不可變類(lèi)型包括數(shù)字,字符串,元組。也就是說(shuō)可變的數(shù)據(jù)類(lèi)型如列表,字典是不能作為集合的元素的。
      Python中的集合分為兩種,一種是set類(lèi)型的集合,另一種是fronzenset類(lèi)型的集合。這兩種類(lèi)型的集合的區(qū)別是:set集合可變,即可以添加,刪除集合內(nèi)部的元素,而fronzenset集合則不可變。即不能添加,刪除集合內(nèi)部的元素。
      set集合的定義是{element1,element2,...,elementn}, 其中,element1~elementn表示集合中的元素,個(gè)數(shù)沒(méi)有限制。每個(gè)元素都是唯一的。

      二、set集合怎么用?

      1、創(chuàng)建set集合

      創(chuàng)建set集合的方式有兩種:
      第一種:通過(guò){}方式創(chuàng)建,其語(yǔ)法格式是:{element1,element2,...,elementn}
      第二種:通過(guò)set 函數(shù), 其語(yǔ)法格式是:set(iterable) 其中iterable不傳的話(huà),則會(huì)創(chuàng)建一個(gè)空的set對(duì)象。傳入的iterable必須是可以遍歷的序列,例如字符串,列表等。舉個(gè)例子:

      set_demo = {'1', 2, ('碼農(nóng)', '飛哥')}
      print(set_demo)
      list = [1, 'test', 1, ('碼農(nóng)', '飛哥')]
      print('列表list結(jié)果=', list)
      set_demo1 = set(list)
      print('生成的set結(jié)果=', set_demo1)

      運(yùn)行結(jié)果是:

      {2, ('碼農(nóng)', '飛哥'), '1'}
      列表list結(jié)果= [1, 'test', 1, ('碼農(nóng)', '飛哥')]
      生成的set結(jié)果= {1, ('碼農(nóng)', '飛哥'), 'test'}

      可以看到列表list中哪怕有兩個(gè)1元素,但是生成set集合之后還是只有一個(gè)1元素,也就是說(shuō)在集合中值相同的元素只會(huì)存儲(chǔ)一遍。

      2、刪除set集合

      刪除set集合可以通過(guò)del(setname)函數(shù)來(lái)刪除,setname是要?jiǎng)h除的set集合名稱(chēng)。

      3、訪問(wèn)set集合元素

      由于集合中的元素是無(wú)序的,因此五香向列表那樣使用下標(biāo)訪問(wèn)元素,Python中,訪問(wèn)集合元素最常用的方法是使用循環(huán),將集合中的元素逐一讀取出來(lái)。

      set_demo = {'1', 2, ('碼農(nóng)', '飛哥')}
      for value in set_demo:
          print(value)

      運(yùn)行結(jié)果是:

      2
      
      ('碼農(nóng)', '飛哥')
      
      1

      元素的輸出也是無(wú)序的。

      4、刪除集合中的元素

      刪除集合中的元素的方式有兩種:
      第一種:通過(guò)remove()方法,其語(yǔ)法結(jié)構(gòu)是:setname.remove(element),其中,setname為待操作的set集合,element為需要?jiǎng)h除的元素,如果刪除失敗的話(huà)則會(huì)報(bào)KeyError錯(cuò)誤。
      第二種:通過(guò)discard()方法,其使用跟remove()方法一致,只是如果刪除元素失敗的話(huà)不會(huì)報(bào)錯(cuò)。

      set_demo = {'1', 2, ('碼農(nóng)', '飛哥')}
      set_demo.remove('1')
      print('刪除元素1之后的集合=', set_demo)
      set_demo.discard('5')
      print('刪除元素5之后的集合=', set_demo)

      運(yùn)行結(jié)果是:

      刪除元素1之后的集合= {2, ('碼農(nóng)', '飛哥')}
      刪除元素5之后的集合= {2, ('碼農(nóng)', '飛哥')}
      5、向集合中添加元素

      通過(guò)add函數(shù)可以向集合中添加元素,其語(yǔ)法結(jié)構(gòu)是:setname.add(element),其中setname是待操作的set集合,element是待添加的元素,只能添加不可變的元素,例如:數(shù)字,元組或者字符串,不能添加列表,字典,set集合這類(lèi)可變的數(shù)據(jù)。
      舉個(gè)例子:

      set_demo.add('6')
      print('添加元素6之后的結(jié)果是=', set_demo)

      運(yùn)行結(jié)果是:

      添加元素6之后的結(jié)果是= {2, '6', ('碼農(nóng)', '飛哥')}

      三、set集合的交并補(bǔ)

      在數(shù)學(xué)中集合是有交集并集和補(bǔ)集的。Python中的集合也是有這些概念的。

      1、交集

      通過(guò)&連接兩個(gè)set集合就能生成一個(gè)新的集合,新集合取兩個(gè)原集合的公共元素。

      2、并集

      通過(guò)|連接兩個(gè)set集合就能生成一個(gè)新的集合,新集合取兩個(gè)原集合的全部元素。

      3、差集

      通過(guò)-連接兩個(gè)set集合就能生成一個(gè)新的集合,新集合取一個(gè)集合中有而另一個(gè)集合中沒(méi)有的元素。

      舉個(gè)栗子:

      set_demo = {1, 3, 5, 6}
      set_demo1 = {2, 4, 6}
      print("取交集的結(jié)果=", set_demo & set_demo1)
      print("取并集的結(jié)果=", set_demo | set_demo1)
      print("取差集的結(jié)果=", set_demo - set_demo1)

      運(yùn)行結(jié)果是

      取交集的結(jié)果= {6}
      取并集的結(jié)果= {1, 2, 3, 4, 5, 6}
      取差集的結(jié)果= {1, 3, 5}

      四、set中的其他方法

      通過(guò)dir(set)可以查看set集合中的所有方法。一共有如下方法:

      ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

      方法的命名比較規(guī)范,按照英文名都能猜測(cè)出方法的作用,在此就不在贅述每個(gè)方法的含義了。直接舉例說(shuō)明下:

      set_demo = {1, 3, 5, 6}
      set_demo1 = {2, 4, 6}
      set_demo.update({12, (2, 3)})
      print('set_demo調(diào)用update方法之后', set_demo)
      set_demo = {1, 3, 5, 6}
      print('set_demo調(diào)用union方法之后', set_demo.union(set_demo1))
      print('set_demo調(diào)用difference方法之后', set_demo.difference(set_demo1))
      print('set_demo調(diào)用__sub__方法之后', set_demo.__sub__(set_demo1))

      運(yùn)行結(jié)果是:

      set_demo調(diào)用update方法之后 {1, 3, (2, 3), 5, 6, 12}
      set_demo調(diào)用union方法之后 {1, 2, 3, 4, 5, 6}
      set_demo調(diào)用difference方法之后 {1, 3, 5}
      set_demo調(diào)用__sub__方法之后 {1, 3, 5}

      五、frozenset 集合

      frozenset集合是set集合的不可變版本,與set集合相比,frozenset集合中的元素不可變,也就是沒(méi)有添加元素,刪除元素的方法。
      創(chuàng)建一個(gè)frozenset集合的方式是通過(guò)frozenset()方法。 其語(yǔ)法格式是:frozenset(iterable) 其中iterable不傳的話(huà),則會(huì)創(chuàng)建一個(gè)空的set對(duì)象。傳入的iterable必須是可以遍歷的序列,例如字符串,列表等。

      frozenset_demo = frozenset(list)
      print("frozenset_demo的類(lèi)型是=", type(frozenset_demo))
      print("frozenset_demo的結(jié)果=", frozenset_demo)

      運(yùn)行結(jié)果是:

      frozenset_demo的類(lèi)型是= <class 'frozenset'>
      frozenset_demo的結(jié)果= frozenset({('碼農(nóng)', '飛哥'), 1, 'test'})

      感謝各位的閱讀,以上就是“Python中的set集合的詳細(xì)介紹”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Python中的set集合的詳細(xì)介紹這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

      向AI問(wèn)一下細(xì)節(jié)

      免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

      AI