溫馨提示×

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

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

Python集合set()方法如何使用

發(fā)布時(shí)間:2022-03-19 08:58:46 來(lái)源:億速云 閱讀:198 作者:iii 欄目:開發(fā)技術(shù)

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

    在python3中按數(shù)據(jù)類型的可變與不可變大致分為如下幾種類型:

    • 不可變數(shù)據(jù)(3個(gè)):Number(數(shù)字)、String(字符串)、Tuple(元組);

    • 可變數(shù)據(jù)(3個(gè)):List(列表)、Dictionary(字典)、Set(集合)。

    1.集合的特點(diǎn)

    1.無(wú)序不重復(fù)沒(méi)有重復(fù)的元素,且元素?zé)o序存放(故集合沒(méi)有下標(biāo)和切片),set的只要作用就是用來(lái)給數(shù)據(jù)去重。

    2.使用時(shí)為 { },與字典區(qū)分:當(dāng)花括號(hào)里的元素不是鍵值對(duì)的時(shí)候?yàn)榧稀?/p>

    3.集合的底層其實(shí)是通過(guò)字典來(lái)封裝的

    2.set的建立

    可以使用大括號(hào) { } 或者 set() 函數(shù)創(chuàng)建集合,但是注意如果創(chuàng)建一個(gè)空集合必須用 set() 而不是 { },因?yàn)閧}是用來(lái)表示空字典類型的。

    1.用set()函數(shù)創(chuàng)建set集合

    person2 = set(("hello","jerry",133,11,133,"jerru")) #只能傳入一個(gè)參數(shù),可以是list,tuple等 類型
    print(len(person2))
    print(person2)
    '''
    5
    {133, 'jerry', 11, 'jerru', 'hello'}
    '''

    2.add()

    a=set()
    a.add("a")
    a.add("b")
    print(a)

    3.用{}創(chuàng)建set集合。空set集合用set()函數(shù)表示,不可a={}。

    person ={"student","teacher","babe",123,321,123} #同樣各種類型嵌套,可以賦值重復(fù)數(shù)據(jù),但是存儲(chǔ)會(huì)去重
    print(len(person))  #存放了6個(gè)數(shù)據(jù),長(zhǎng)度顯示是5,存儲(chǔ)是自動(dòng)去重
    print(person) #但是顯示出來(lái)則是去重的
    '''
    5
    {321, 'teacher', 'student', 'babe', 123}
    '''
    #空set集合用set()函數(shù)表示
    person1 = set() #表示空set,不能用person1={}
    print(len(person1))
    print(person1)
    '''
    0
    set()
    '''

    4.set集合的轉(zhuǎn)化

    a=["awe","weg","dawqgg"]
    c=set(a)
    print(c)
    b="chenshuagege"
    d=set(b)
    print(d)
    al=("233","34455")
    aw=set(al)
    print(al)

    3.常見使用注意事項(xiàng)

    #set對(duì)字符串也會(huì)去重,因?yàn)樽址畬儆谛蛄小?
    str1 = set("abcdefgabcdefghi")
    str2 = set("abcdefgabcdefgh")
    print(str1,str2)
    print(str1 - str2) #-號(hào)可以求差集
    print(str2 - str1)  #空值
    #print(str1 + str2)  #set里不能使用+號(hào)
    ====================================================================
    {'d', 'i', 'e', 'f', 'a', 'g', 'b', 'h', 'c'} {'d', 'e', 'f', 'a', 'g', 'b', 'h', 'c'}
    {'i'}
    set()

    4.set的常用方法

    4.1 set集合的增刪改查操作

    • add 用于加入元素

    • update 用于集合的合并

    • remove 當(dāng)移除一個(gè)集合里沒(méi)有的元素時(shí),報(bào)錯(cuò)

    • discard 當(dāng)移除一個(gè)集合里沒(méi)有的元素時(shí),不會(huì)報(bào)錯(cuò)

    • del 僅可對(duì)集合本身使用,不可用于元素,因?yàn)樵卦诩侠餅榛靵y排放,無(wú)下標(biāo)

    • clear 清空集合,留下空集合

    • pop 隨機(jī)刪除集合里的一個(gè)元素

    #1.給set集合增加數(shù)據(jù)
    person ={"student","teacher","babe",123,321,123}
    person.add("student") #如果元素已經(jīng)存在,則不報(bào)錯(cuò),也不會(huì)添加,不會(huì)將字符串拆分成多個(gè)元素,區(qū)別update
    print(person)
    person.add((1,23,"hello")) #可以添加元組,但不能是list
    print(person)
    '''
    {321, 'babe', 'teacher', 'student', 123}
    {(1, 23, 'hello'), 321, 'babe', 'teacher', 'student', 123}
    '''
    # update用于集合的合并,可以把多個(gè)集合添加到一個(gè)集合里面??梢詉terar的數(shù)據(jù)都可以添加成set集合
    person.update("abc")#使用update不能添加字符串,會(huì)拆分
    print(person)  #會(huì)將字符串拆分成a,b,c三個(gè)元素
    '''
    {321, 1, 3, 'b', 'c', 'teacher', (1, 23, 'hello'), 'a', 'babe', 'student', 123}
    '''
    set1 = set()
    set1.add('武動(dòng)乾坤')
    set2 = {'jsy', '稻香', '愛的代價(jià)', '大碗寬面'}
    set2.update(set1)
    print(set2)
    '''
    {'大碗寬面', 'jsy', '愛的代價(jià)', '稻香', '武動(dòng)乾坤'}
    '''
    #2.從set里刪除數(shù)據(jù)
    person.remove("student")#按元素去刪除
    print(person)
    #print("student")如果不存在 ,會(huì)報(bào)錯(cuò)。
    '''
    {321, 1, 3, 'c', 'b', (1, 23, 'hello'), 'teacher', 'babe', 'a', 123}
    '''
    person.discard("student")#功能和remove一樣,好處是沒(méi)有的話,不會(huì)報(bào)錯(cuò)
    ret = person.pop() #在list里默認(rèn)刪除最后一個(gè),在set里隨機(jī)刪除一個(gè)。
    print(person)
    print(ret) #pop()返回的是被刪除掉的那一項(xiàng)
    '''
    {1, 3, (1, 23, 'hello'), 'teacher', 'b', 'a', 'babe', 123, 'c'}
    '''
    #3.更新set中某個(gè)元素,因?yàn)槭菬o(wú)序的,所以不能用角標(biāo)
    #所以一般更新都是使用remove,然后在add
    #4.查詢是否存在,無(wú)法返回索引,使用in判斷
    if "teacher" in person:
        print("true")
    else:
        print("不存在")
    '''
    true
    '''
    #5.終極大招:直接清空set
    print(person)
    person.clear()
    print(person)
    '''
    set()
    '''

    4.2 其它用法

    交 并 差集操作交集 intersection;并集 union;差集 difference
    可用運(yùn)算符表示交集,并集,差集交集 & 并集 | 差集 -

    #取兩者的交集
    b={1,23}
    a={23,5}
    ret=b.intersection(a)
    print(ret)
    #取兩者的交集,intersection_update會(huì)改變b的內(nèi)容
    b={1,23}
    a={23,5}
    b.intersection_update(a)
    print(b)
    #union是把兩個(gè)set集合合起來(lái)
    a={"a","b","c"}
    b={"a","wa"}
    wt=a.union(b)
    print(wt)
    #difference表示的意思是a中的內(nèi)容b是沒(méi)有的,但是這個(gè)不會(huì)修改a自身的值,而是付給ret了
    a={"12","14","234"}
    b={"12","23"}
    ret=a.difference(b)
    print(ret)
    #difference_update表示的意思是a中的內(nèi)容b是沒(méi)有的,執(zhí)行完,會(huì)修改a的內(nèi)容
    a={"12","14","234"}
    b={"12","23"}
    a.difference_update(b)
    print(a)
    #symmetric_difference為把兩個(gè)set集合里相同的內(nèi)容當(dāng)作邊然后取這邊兩邊的內(nèi)容
    a={"a","b","c"}
    b={"a","wa"}
    ret=a.symmetric_difference(b)
    print(ret)
    a.symmetric_difference(b)
    print(a)
    #可用運(yùn)算符表示交集,并集,差集
    set2 = {1, 2, 3, 4, 5}
    set3 = {3, 4, 5, 6, 7, 8, 9} 
    print(set2 & set3)  # 交集符號(hào)  &
    print(set2 | set3)  # 并集符號(hào) |
    print(set2 - set3)  # 差集符號(hào) -
    b={1,23}
    a={23,5}
    #如果a與b有集合的話,就返回false;如果沒(méi)有集合的話,就返回true
    ret=b.isdisjoint(a)
    print(ret)
    b={1,23,5}
    a={23,5}
    #issuperset說(shuō)明b是否是a的父親,如果是就輸出true,如果不是輸出false
    ret=b.issuperset(a)
    print(ret)
    b={1,23,5}
    a={23,5}
    #b是否是a的子,如果是就輸出true,如果不是就輸出false
    ret=b.issubset(a)
    print(ret)

    5.列表,元組,字典,集合 

    • list: 允許重復(fù),有序,有下標(biāo),可切片

    • tuple: 允許重復(fù),里面元素不能進(jìn)行增刪改,只能查看

    • dict: 字典里的元素以鍵值對(duì)的形式存在 鍵:唯一性 值:可以重復(fù)

    • set: 元素不允許重復(fù),且具有無(wú)序性

    5.1 它們之間的類型轉(zhuǎn)換

    1.列表,元組,集合,此三者均可相互轉(zhuǎn)

    list----->tuple,set 列表轉(zhuǎn)集合時(shí),注意不能有重復(fù)元素,否則長(zhǎng)度改變

    tuple----->list,set

    set----->list,tuple

    2.當(dāng)字典參與的轉(zhuǎn)換時(shí),需特殊對(duì)待

    dict----->list,tuple 僅能將字典的鍵轉(zhuǎn)換,不能將值轉(zhuǎn)換

    list----->dict 列表內(nèi)必須是列表或是元組,且其中只有兩個(gè)元素時(shí),可轉(zhuǎn)

    list = [['a', {1}], ('', 2), ('c', 3)]
    print(dict(list))

    輸出:

    {‘a’: {1}, ‘’: 2, ‘c’: 3}

    5.2 集合和列表方法上的區(qū)別

    正是由于集合的無(wú)序性,沒(méi)有下標(biāo),故在方法上與列表有些差異。

    • append(添加元素) extend(實(shí)現(xiàn)列表的拼接)

    • insert(在某一下標(biāo)插入元素) ----->listadd(添加元素) update(兩個(gè)集合的合并) ---->set

    感謝各位的閱讀,以上就是“Python集合set()方法如何使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Python集合set()方法如何使用這一問(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