真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python的集合知識點(diǎn)有哪些

這篇文章主要介紹“python的集合知識點(diǎn)有哪些”,在日常操作中,相信很多人在python的集合知識點(diǎn)有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python的集合知識點(diǎn)有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)德陽機(jī)房服務(wù)器托管報價,主機(jī)托管價格性價比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。

集合的定義

集合(dict)是一組0至多個無序的、無重復(fù)的不可變對象。集合的底層結(jié)構(gòu)也是散列表(hash table),可以快速查找集合內(nèi)的元素,是一種以空間換時間的數(shù)據(jù)結(jié)構(gòu)。

set1 = {'今日', '頭條', '關(guān)于', '集合','案例'}
for i in set1:
    print(i)
# 多次運(yùn)行上述代碼驗(yàn)證,可以發(fā)現(xiàn)每次打印的順序都不一樣,說明是無序的。

集合的創(chuàng)建

  • 空集合,set()。

    set1 = set()
    print(type(set1))
    
    out:
    

  • 1個元素的集合,花括號將其包圍。

    set1 = {'今日'}
    print(type(set1))
    
    out:
    

  • 多個元素的集合,用花括號將所有元素包圍,元素之間用逗號隔開。

    set1 = {'今日', '頭條', '關(guān)于', '集合','案例'}
    for i in set1:
        print(i)
    
    out:
    關(guān)于
    案例
    今日
    集合
    頭條

  • 其他類型轉(zhuǎn)換成集合。

    tupl1 = ('name', 'age', 'money', 'height')
    list1 = ["Mike", 20, 8000, 180]
    dict1 = {'name': 'Mike', 'age': 20, 'money': 8000, 'height': 180}
    set1 = set(tupl1)
    set2 = set(list1)
    set3 = set(dict1)
    print(set1, type(set1))
    print(set2, type(set2))
    print(set3, type(set3))
    
    out:
    {'money', 'height', 'name', 'age'} 
    {8000, 180, 'Mike', 20} 
    {'money', 'height', 'name', 'age'} 

  • 推導(dǎo)式,創(chuàng)建方法和列表推導(dǎo)式如出一轍。

    set1 = {i for i in range(10)}
    print(set1, type(set1))
    
    out:
    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 

集合的訪問

  • 集合比較特殊,沒有直接訪問元素的方法。但可以對集合for循環(huán)遍歷元素。

    set1 = {'頭條', 5, 4, 3, '集合', 2, 1, '測試'}
    for i in set1:
        print(i)
    
    out:
    頭條
    2
    3
    4
    5
    1
    測試
    集合

集合的增加

  • 通過add方法添加元素。add的參數(shù)只可接收不可變對象(數(shù)字、字符串、元組),不可接收可變對象(列表、字典、集合)。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    set1.add(('abc','bcd')) 
    print(set1)
    
    out:
    {1, 2, 3, '頭條', '集合', '測試', ('abc', 'bcd')}

  • 通過update方法添加。update的參數(shù)可以是不可變對象,也可以是可變對象(如果嵌套了可變對象會報錯)。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    set2 = [[i, j] for i in range(5, 8) for j in range(8, 10)]
    # set1.update(set2)  報錯,因?yàn)閟et2內(nèi)部元素是列表,不能轉(zhuǎn)成不可變對象
    set3 = [i for i in range(5, 8)]
    set1.update(set3)  # 成功,因?yàn)閟et3內(nèi)部元素是數(shù)字,可轉(zhuǎn)成不可變對象
    print(set1)
    
    out:
    {1, 2, 3, '測試', 5, 6, 7, '頭條', '集合'}

集合的刪除

  • del:可直接刪除集合本身,但不能指定刪除集合的元素。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    del set1

  • pop方法:無參數(shù)方法,隨機(jī)刪除一個元素并返回。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    print(set1.pop())
    
    out:
    集合

  • remove方法:移除指定元素,若該元素不存在會報錯,無返回值。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    set1.remove('頭條')
    print(set1)
    # set1.remove(5)  5b不是set1的元素,移除時會報KeyError
    
    out:
    {1, 2, 3, '集合', '測試'}

  • discard方法:移除指定元素,若該元素不存在不報錯,無返回值。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    set1.discard(5)
    set1.discard(1)
    print(set1)
    
    out:
    {2, 3, '集合', '頭條', '測試'}

  • clear方法:清空集合內(nèi)容,保留集合本身,在循環(huán)體中需要清空集合時優(yōu)先用這個方法,而不要新建集合,因?yàn)樾陆ǖ拈_銷相對較大。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    set1.clear()
    print(set1)
    
    out:
    {}

集合的運(yùn)算

  • 并集:集合A和集合B所有元素。

    set_a = {0, 1, 2, 3, 4}
    set_b = {3, 4, 5, 6, 7}
    set_c = set_a.union(set_b)
    print(set_c)
    
    out:
    {0, 1, 2, 3, 4, 5, 6, 7}

  • 交集:集合A和集合B共有的元素。

    set_a = {0, 1, 2, 3, 4}
    set_b = {3, 4, 5, 6, 7}
    set_c = set_a.intersection(set_b)  # 返回集合a和b的交集
    set_a.intersection_update()  # 直接把集合a中不是交集的元素去掉
    print(set_c)
    print(set_a)
    
    out:
    {3, 4}
    {3, 4}

  • 差集:集合A中有而集合B中沒有的元素。

    set_a = {0, 1, 2, 3, 4}
    set_b = {3, 4, 5, 6, 7}
    set_c = set_a.difference(set_b)  # 返回集合a和b的差集
    set_a.difference_update(set_b)  # 直接把集合a中不是差集的元素去掉
    print(set_c)
    print(set_a)
    
    out:
    {0, 1, 2}
    {0, 1, 2}

  • 對等差分:集合A和B的并集再去除集合A和B的交集

    set_a = {0, 1, 2, 3, 4}
    set_b = {3, 4, 5, 6, 7}
    set_c = set_a.symmetric_difference(set_b)  # 返回集合a和b的對等差分
    set_a.symmetric_difference_update(set_b)  # 把集合a改成集合a和b的對等差分
    print(set_c)
    print(set_a)
    
    out:
    {0, 1, 2, 5, 6, 7}
    {0, 1, 2, 5, 6, 7}

集合的查詢

  • 對集合的元素做in運(yùn)算。

    set1 = {'頭條', 3, '集合', 2, 1, '測試'}
    print(5 in set1)
    print(1 in set1)
    
    out:
    False
    True

  • 有無交集:isdisjoint方法,判斷集合A和B有沒有交集,有返回False,沒有返回True。

    set_a = {0, 1, 2, 3, 4}
    set_b = {3, 4, 5, 6, 7}
    set_c = {8, 9, 10}
    print(set_a.isdisjoint(set_b))
    print(set_a.isdisjoint(set_c))
    
    out:
    False
    True

  • 是否子集:issubset方法,判斷集合A是不是集合B的子集,是返回True,不是返回False。

    set_a = {3, 4}
    set_b = {3, 4, 5, 6, 7}
    set_c = {8, 9, 10}
    print(set_a.issubset(set_b))
    print(set_c.issubset(set_b))
    
    out:
    True
    False

  • 是否父集:issuperset方法,判斷集合A是不是集合B的父集,是返回True,不是返回False。

    set_a = {3, 4}
    set_b = {3, 4, 5, 6, 7}
    set_c = {8, 9, 10}
    print(set_b.issuperset(set_a))
    print(set_b.issuperset(set_c))
    
    out:
    True
    False

集合的其他方法

集合的內(nèi)置方法非常豐富,除了上述說過的方法外,還有l(wèi)en和copy。

  • len,返回集合的元素長度。

  • copy,建立集合的副本,內(nèi)容一致,id不同。(注意:嵌套結(jié)構(gòu)要用deepcopy)。

以下是案例:

set_a = {0, 1, 2, 3, 4}
print(len(set_a))
set_b = set_a.copy()
print(id(set_a), id(set_b))

out:
5
2269718817472 2269718817024

集合的特殊用法

集合有去重功能,非常強(qiáng)大。關(guān)于集合去重功能的運(yùn)用我舉2個特殊的用法:

  • 一行代碼判斷是否有重復(fù)元素。

    list1 = [1, 1, 2, 3, 4, 5]
    list2 = [1, 2, 3, 4, 5, 6]
    str1 = "aabbcdefg"
    str2 = "abcdefghi"
    print(len(set(list1)) == len(list1))  # 不相等表示有重復(fù)
    print(len(set(list2)) == len(list2))  # 相等表示無重復(fù)
    print(len(set(str1)) == len(str1))  # 不相等表示有重復(fù)
    print(len(set(str2)) == len(str2))  # 相等表示無重復(fù)
    
    out:
    False
    True
    False
    True

  • 二行代碼實(shí)現(xiàn)去重并保持原有順序。

    list1 = [1, 1, 2, 3, 4, 5]
    list2 = list(set(list1))
    list2.sort(key=list1.index)
    print(list2)
    
    out:
    [1, 2, 3, 4, 5]

到此,關(guān)于“python的集合知識點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


網(wǎng)頁題目:python的集合知識點(diǎn)有哪些
地址分享:http://weahome.cn/article/jhidgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部