tft每日頭條

 > 生活

 > pythonset和list的區别是什麼

pythonset和list的區别是什麼

生活 更新时间:2024-10-01 20:16:33

您好,我是碼農飛哥,感謝您閱讀本文,歡迎一鍵三連哦本文主要介紹Python數據類型中的集合(set和frozenset),咱們一次把集合聊個透徹。幹貨滿滿,建議收藏,需要用到時常看看。 小夥伴們如有問題及需要歡迎私信或者留言給我哦~ ~ ~。

集合是什麼?

集合是什麼呢?相信讀者朋友們哪怕是沒有用過集合這個數據類型。也一定在數學課堂上聽過集合這個名詞。數學中的集合是一個基本概念,說白了一堆不重複的數字可以組成一個集合。回到Python中集合的數據類型,它可以用來存放多個不重複的數據,并且這些數據的數據類型是不可變類型。這些不可變類型包括數字,字符串,元組。也就是說可變的數據類型如列表,字典是不能作為集合的元素的。 Python中的集合分為兩種,一種是set類型的集合,另一種是fronzenset類型的集合。這兩種類型的集合的區别是:set集合可變,即可以添加,删除集合内部的元素,而fronzenset集合則不可變。即不能添加,删除集合内部的元素。 set集合的定義是{element1,element2,...,elementn}, 其中,element1~elementn表示集合中的元素,個數沒有限制。每個元素都是唯一的。

set集合怎麼用?

創建set集合

創建set集合的方式有兩種: 第一種:通過{}方式創建,其語法格式是:{element1,element2,...,elementn} 第二種:通過set 函數, 其語法格式是:set(iterable) 其中iterable不傳的話,則會創建一個空的set對象。傳入的iterable必須是可以遍曆的序列,例如字符串,列表等。舉個例子:

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

運行結果是:

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

可以看到列表list中哪怕有兩個1元素,但是生成set集合之後還是隻有一個1元素,也就是說在集合中值相同的元素隻會存儲一遍。

删除set集合

删除set集合可以通過del(setname)函數來删除,setname是要删除的set集合名稱。

pythonset和list的區别是什麼(Python八)1

訪問set集合元素

由于集合中的元素是無序的,因此五香向列表那樣使用下标訪問元素,Python中,訪問集合元素最常用的方法是使用循環,将集合中的元素逐一讀取出來。

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

運行結果是:

2 ('碼農', '飛哥') 1

元素的輸出也是無序的。

删除集合中的元素

删除集合中的元素的方式有兩種: 第一種:通過remove()方法,其語法結構是:setname.remove(element),其中,setname為待操作的set集合,element為需要删除的元素,如果删除失敗的話則會報KeyError錯誤。 第二種:通過discard()方法,其使用跟remove()方法一緻,隻是如果删除元素失敗的話不會報錯。

set_demo = {'1', 2, ('碼農', '飛哥')} set_demo.remove('1') print('删除元素1之後的集合=', set_demo) set_demo.discard('5') print('删除元素5之後的集合=', set_demo)

運行結果是:

删除元素1之後的集合= {2, ('碼農', '飛哥')} 删除元素5之後的集合= {2, ('碼農', '飛哥')}

向集合中添加元素

通過add函數可以向集合中添加元素,其語法結構是:setname.add(element),其中setname是待操作的set集合,element是待添加的元素,隻能添加不可變的元素,例如:數字,元組或者字符串,不能添加列表,字典,set集合這類可變的數據。 舉個例子:

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

運行結果是:

添加元素6之後的結果是= {2, '6', ('碼農', '飛哥')}

set集合的交并補

在數學中集合是有交集并集和補集的。Python中的集合也是有這些概念的。

交集

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

并集

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

差集

通過-連接兩個set集合就能生成一個新的集合,新集合取一個集合中有而另一個集合中沒有的元素。 舉個栗子:

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

運行結果是

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

set中的其他方法

通過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']

方法的命名比較規範,按照英文名都能猜測出方法的作用,在此就不在贅述每個方法的含義了。直接舉例說明下:

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

運行結果是:

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

frozenset 集合

frozenset集合是set集合的不可變版本,與set集合相比,frozenset集合中的元素不可變,也就是沒有添加元素,删除元素的方法。 創建一個frozenset集合的方式是通過frozenset()方法。 其語法格式是:frozenset(iterable) 其中iterable不傳的話,則會創建一個空的set對象。傳入的iterable必須是可以遍曆的序列,例如字符串,列表等。

frozenset_demo = frozenset(list) print("frozenset_demo的類型是=", type(frozenset_demo)) print("frozenset_demo的結果=", frozenset_demo)

運行結果是:

frozenset_demo的類型是= <class 'frozenset'> frozenset_demo的結果= frozenset({('碼農', '飛哥'), 1, 'test'})

總結

本文詳細介紹了Python中set集合的基本概念和詳細用法,希望對讀者朋友們有所幫助。

好文推薦

【Python從入門到精通】(七)Python字典(dict)讓人人都能找到自己的另一半(鍵值對,成雙成對) 【Python從入門到精通】(六)Python内置的數據類型-列表(list)和元組(tuple),九淺一深,十個章節,不信你用不到 【Python從入門到精通】(五)Python内置的數據類型-序列和字符串,沒有女友,不是保姆,隻有拿來就能用的幹貨 【Python從入門到精通】(四)Python的内置數據類型有哪些呢?數字了解一下

pythonset和list的區别是什麼(Python八)2

我是碼農飛哥,再次感謝您讀完本文。 全網同名【碼農飛哥】。不積跬步,無以至千裡,享受分享的快樂 我是碼農飛哥,再次感謝您讀完本文

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved