【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')?# 42)打印內容是無序的
集合的元素是無序的,因此打印的時候,也是無序的
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 -- 可選,其他要查找相同元素的集合,可以多個,多個使用逗號 ,?
09、interp_update()
描述:interp_update() 方法用于獲取兩個或更多集合中都重疊的元素,即計算交集。interp_update()方法不同于interp()方法,因為interp()?方法是返回一個新的集合,而?interp_update()?方法是在原始的集合上移除不重疊的元素。
語法:set.interp_update(set1, set2 ... etc)
參數:
set1 -- 必需,要查找相同元素的集合
set2 -- 可選,其他要查找相同元素的集合,可以多個,多個使用逗號 , 隔開
10、isdisjoint()
描述:isdisjoint() 方法用于判斷兩個集合是否包含相同的元素,如果沒有返回True,否則返回 False。
語法:set.isdisjoint(set)
參數:set -- 必需,要比較的集合
x = {"apple", "banana", "cherry"} y = {"google", "runoob", "facebook"} z = x.isdisjoint(y) print(z) True11、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) False12、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) False13、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 -- 可選,其他要合并的集合,可以多個,多個使用逗號 , 隔開。
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个方法全解,看完就够了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据分析】离婚率逐年上升,数据分析告诉
- 下一篇: 【特征工程】17种将离散特征转化为数字特