日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python基础】一文理解Python集合,17个方法全解,看完就够了

發布時間:2025/3/12 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python基础】一文理解Python集合,17个方法全解,看完就够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、集合的定義

01 定義與特性

Python中的集合類似于數學中的集合概念,它是一組無序、不可重復元素序列,集合用{value1,value2}創建,某種程度上可以把集合看作是沒有值的字典。字典是dict = {key:value,key2:value2,}需要key。特點:1、不同元素組成 2、無序 3、集合中的元素必須是不可變類型

1)自動去重

注意,集合是有不同元素組成,所以即便里面的值重復了,也會去重。

set1 = {1, 2, 4, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 1} print(set1) # {1,?2,?3,?4} len(set('1232'))#?3 len('1232')?# 4

2)打印內容是無序的

集合的元素是無序的,因此打印的時候,也是無序的

set_0 = {"小伍哥","真","是","帥"} print(set_0) # {'帥',?'小伍哥',?'是',?'真'}

3)集合中的元素必須是不可變類型

集合類型要求元素是獨一無二的,不能存在相同的元素,但是如果其中的某一個元素是可以被改變的,它一旦改變之后可能會和其他的元素相同,這樣子的話集合類型就會出現錯誤,所以集合類型要求,該元素不能是可變數據類型

?

02 集合的創建

可以使用大括號?{ }?或者 set()?函數創建集合,注意:創建一個空集合必須用 set()?而不是?{ },因為?{ }?是用來創建一個空字典。

創建格式:

set=?{value01,value02,...} 或者 set(value)

s = {'s', 'e', 't'} s?=?set(['a,?b,?c,?d,?e']) s = set('我愛我的祖國') s # {'國',?'我',?'愛',?'的',?'祖'}

集合也可以用表達式(推導)的方式創建

{x * 2 for x in 'abc'} #{'aa', 'bb', 'cc} {x **2 for x in range(1,5)} #{1, 4, 9, 16}

創建空集合必須用set()

set = set() # 創建空集合必須用這種方式 dict?=?{}????#?使用這種方式創建的為空的字典

?

二、集合的17個方法

#獲取集合的所有方法 print(dir(set())) [..., 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'interp', 'interp_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

01、add()

描述:add() 方法用于給集合添加元素,如果添加的元素在集合中已存在,則不執行任何操作。注意:集合中只能包含可哈希的對象,即 list,dict 都不能嵌入到集合

語法:set.add(elmnt)

參數:elmnt -- 必需,要添加的元素。

#添加不存在的元素 set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set1.add('羅玉鳳')#給他加個鳳姐進去 set1 {'Makiyo', 'Selina', '周揚青', '徐懷鈺', '羅玉鳳'}set1.add('喬碧蘿')#再給羅志祥加個喬碧蘿 set1 {'Makiyo', 'Selina', '喬碧蘿', '周揚青', '徐懷鈺', '羅玉鳳'}#添加存在的元素 set1.add('徐懷鈺') set1{'Makiyo', 'Selina', '喬碧蘿', '周揚青', '羅玉鳳'}#我們發現,還是只有五個

02、clear()

描述:clear() 方法用于移除集合中的所有元素。

語法:set.clear()

參數:無。

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set1.clear()#一下全部清除了 set1 set()#返回一個空集合

03、copy()

描述:copy() 方法用于復制一個集合,會重新生成一個

語法:set.copy()

參數:

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set2 = set1.copy()#直接復制產生一個新的集合,要多少有多少 set2 {'Makiyo', 'Selina', '周揚青', '徐懷鈺'}

04、difference()

描述:difference() 方法用于返回集合的差集,即返回的集合元素包含在第一個集合中,但不包含在第二個集合(方法的參數)中。也可以用set1-set2 進行差運算,set1減去set1&set2部分

語法:set.difference(set)

參數:set -- 必需,用于計算差集的集合

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set2?=?{'周揚青','徐懷鈺','羅玉鳳','喬碧蘿'}#再建一個羅志祥的女友集合 set1.difference(set2) {'Makiyo', 'Selina'}

05、difference_update()

描述:difference_update()方法用于移除兩個集合中都存在的元素,與difference()方法的區別在于difference()?方法返回一個移除相同元素的新集合,而difference_update()方法是直接在原來的集合中移除元素,沒有返回值。

語法:set.difference_update(set)

參數:set -- 必需,用于計算差集的集合

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set2 = {'周揚青','徐懷鈺','羅玉鳳','喬碧蘿'}#再建一個羅志祥的女友集合set1.difference_update(set2)#無返回值print(set1) {'Makiyo', 'Selina'}

08、interp()

描述:interp() 方法用于返回兩個或更多集合中都包含的元素,即交集。set1&set2

語法:set.interp(set1, set2 ... etc)

參數:

  • set1 -- 必需,要查找相同元素的集合

  • set2 -- 可選,其他要查找相同元素的集合,可以多個,多個使用逗號 ,?

#兩個集合取交集 set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set2 = {'周揚青','徐懷鈺','羅玉鳳','喬碧蘿'}#再建一個羅志祥的女友集合 set1.interp(set2){'周揚青', '徐懷鈺'} #多個集合取交集 x = {"a", "b", "c"} y = {"c", "d", "e"} z = {"f", "g", "c"} result = x.interp(y, z) print(result) {'c'}

09、interp_update()

描述:interp_update() 方法用于獲取兩個或更多集合中都重疊的元素,即計算交集。interp_update()方法不同于interp()方法,因為interp()?方法是返回一個新的集合,而?interp_update()?方法是在原始的集合上移除不重疊的元素。

語法:set.interp_update(set1, set2 ... etc)

參數:

  • set1 -- 必需,要查找相同元素的集合

  • set2 -- 可選,其他要查找相同元素的集合,可以多個,多個使用逗號 , 隔開

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set2 = {'周揚青','徐懷鈺','羅玉鳳','喬碧蘿'}#再建一個羅志祥的女友集合set1.interp_update(set2) print(set1) {'周揚青', '徐懷鈺'}

10、isdisjoint()

描述:isdisjoint() 方法用于判斷兩個集合是否包含相同的元素,如果沒有返回True,否則返回 False。

語法:set.isdisjoint(set)

參數:set -- 必需,要比較的集合

x = {"apple", "banana", "cherry"} y = {"google", "runoob", "facebook"} z = x.isdisjoint(y) print(z) True

11、issubset()

描述:issubset() 判斷set1是否是set2的子集,如果是則返回 True,否則返回 False。

語法:set.issubset(set)

參數:set -- 必需,要比查找的集合

示例:

x = {"a", "b", "c"} y = {"f", "e", "d", "c", "b", "a"} z = x.issubset(y) print(z) True x = {"a", "b", "c"} y = {"f", "e", "d", "c", "b"} z = x.issubset(y) print(z) False

12、issuperset()

描述:issuperset() 方法用于判斷指定集合的所有元素是否都包含在原始的集合中,如果是則返回 True,否則返回 False。

語法:set.issuperset(set)

參數:set -- 必需,要比查找的集合

示例:

x = {"f", "e", "d", "c", "b", "a"} y = {"a", "b", "c"} z = x.issuperset(y) print(z) Truex = {"f", "e", "d", "c", "b"} y = {"a", "b", "c"} z = x.issuperset(y) print(z) False

13、pop()

描述:pop() 方法用于隨機移除一個元素。

語法:set.pop()

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'} set1.pop() '徐懷鈺' set1{'Makiyo', 'Selina', '周揚青'}

14、remove()

描述:remove() 方法用于移除集合中的指定元素。該方法不同于discard()方法,因為 remove()?方法在移除一個不存在的元素時會發生錯誤,而 discard()?方法不會。

語法:set.remove(item)

參數:item -- 要移除的元素

#構建一個羅志祥歷任女友的集合 set1 = {'周揚青','徐懷鈺','Makiyo','Selina'} #現在我們拿走一個看看 set1.remove('徐懷鈺') set1 {'Makiyo', 'Selina', '周揚青'}#人家還剩3個,真是#再拿走一個集合里面沒有的,發現并沒有報錯 set1.discard('女助理') set1 {'Makiyo', 'Selina', '周揚青'}#用remove方法試試,發現就報錯了 set1.remove('女助理') KeyError: '女助理'

15、discard()

描述:discard() 方法用于移除指定的集合元素。該方法不同于?remove()?方法,因為 remove()?方法在移除一個不存在的元素時會發生錯誤,而 discard()?方法不會。

語法:set.discard(value)

參數:value -- 必需,要移除的元素

#構建一個羅志祥歷任女友的集合 set1 = {'周揚青','徐懷鈺','Makiyo','Selina'} #現在我們拿走一個看看 set1.discard('徐懷鈺') set1 {'Makiyo', 'Selina', '周揚青'}#人家還剩3個,真是#再拿走一個集合里面沒有的,發現并沒有報錯 set1.discard('女助理') set1 {'Makiyo', 'Selina', '周揚青'}#用remove方法試試,發現就報錯了 set1.remove('女助理')KeyError: '女助理'

16、symmetric_difference()

描述:symmetric_difference() 方法返回兩個集合中不重復的元素集合,即會移除兩個集合中都存在的元素。

語法:set.symmetric_difference(set)

參數:set -- 集合

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set2 = {'周揚青','徐懷鈺','羅玉鳳','喬碧蘿'}#再建一個羅志祥的女友集合 set1.symmetric_difference(set2){'Makiyo', 'Selina', '喬碧蘿', '徐懷鈺', '羅玉鳳'}

17、symmetric_difference_update()

描述:symmetric_difference_update() 方法移除當前集合中在另外一個指定集合相同的元素,并將另外一個指定集合中不同的元素插入到當前集合中。

語法:set.symmetric_difference_update(set)

參數:set -- 要檢測的集合

set1 = {'周揚青','徐懷鈺','Makiyo','Selina'}#建一個羅志祥的女友集合 set2 = {'周揚青','徐懷鈺','羅玉鳳','喬碧蘿'}#再建一個羅志祥的女友集合 set1.symmetric_difference_update(set2) print(set1) {'Selina', '羅玉鳳', '喬碧蘿', 'Makiyo'}

16、union()

描述:union() 取并集,效果等同于 | ,重復元素只會出現一次,但是括號里可以是 list,tuple,其他 , 甚至是 dict

語法:set.union(set1, set2...)

參數:

  • set1 -- 必需,合并的目標集合

  • set2 -- 可選,其他要合并的集合,可以多個,多個使用逗號 , 隔開。

#兩個集合的并集 set1 = {'小蘋果','大桃子','長香蕉'} set2 = {'小李子','大蘿卜','長香蕉'} set1.union(set2) {'大桃子', '大蘿卜', '小李子', '小蘋果', '長香蕉'}#長香蕉只出現一次#三個集合并集 set3 = {'爛柿子','羅志祥'} set1.union(set2,set3) {'大桃子', '大蘿卜', '小李子', '小蘋果', '爛柿子', '羅志祥', '長香蕉'}#集合和列表也可以 set4=['小可愛','西紅柿'] set1.union(set4){'大桃子', '小可愛', '小蘋果', '西紅柿', '長香蕉'}#利用交集并集來寫一個字符串相似的小方法 def jaccard_sim(arg0,arg1):set1 = set(arg0)set2 = set(arg1)sim = len(set1.interp(set2))/len(set1.union(set2))return(sim)#interp 求集合的交集arg0 = '(質量問題)標識標簽不合格' arg1 = '(質量問題)涉嫌質量不合格' jaccard_sim(arg0,arg1) 0.6428571428571429 檢測下兩個標題的相似性arg0?=?'羅志祥道歉人設崩塌:多個品牌商中槍?代言微博遭刪除' arg1 = '凌晨五點的羅志祥:你知不知道為了出軌,我有多努力' jaccard_sim(arg0,arg1) 0.1428571428571

17、update()

?描述:update() 方法用于修改當前集合,可以添加新的元素或集合到當前集合中,如果添加的元素在集合中已存在,則該元素只會出現一次,重復的會忽略。

語法:set.update(set)

參數:set -- 必需,可以是元素或集合

x = {"apple", "banana", "cherry"} y = {"google", "runoob", "apple"}x.update(y) print(x) {'banana', 'apple', 'google', 'runoob', 'cherry'}

?

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 獲取本站知識星球優惠券,復制鏈接直接打開: https://t.zsxq.com/qFiUFMV 本站qq群704220115。加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【Python基础】一文理解Python集合,17个方法全解,看完就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。