1. 程式人生 > >【python基礎】集合類型

【python基礎】集合類型

linux code 課程 xxd hone 插入元素 close 1.3 格式

集合類型:

  作用:  --> 關系運算(交集,並集,差集)

       --> 去重(有局限性)

定義方法:set()
linuxers = {1,1.1,‘a‘,(1,2,3)}    ##集合內的值,只能為不可變類型,比如int,str,float,tuple
print(type(linuxers))
<class ‘set‘>

需要掌握:

1、集合的定義方法

定義方法類似於字典,{}內,以逗號分割,但不同於字典之處不是key:varual格式,集合內的元素一定是不可變類型

1     pythoners = set({alexdsb,egon
,lxxdsb,oldboy,吳三江,張鐵蛋}) 2 3 print(pythoners) 4 5 pythoners = {alexdsb,egon,lxxdsb,oldboy,吳三江,張鐵蛋} 6 7 print(pythoners)

2、集合的運算(&,-,|,^,)

例題:以下是報名python和linux的學員信息,請完成對一下兩個集合的運算

   1.1、求既報名linux又包名python的學員有哪些=》即求兩個集合體的共同部分,稱之為交集 print(pythoners & linuxers) print(pythoners.intersection(linuxers)) 1.2、求只報名python,沒有報名linux的學員有哪些=》即集合pythoners減去linuxers,稱之為差集 print(pythoners - linuxers) print(pythoners.difference(linuxers)) 1.3、求只報名linux,沒有報名python的學員有哪些 print(linuxers - pythoners) print(linuxers.difference(pythoners)) 1.4 求老男孩所有報名的學生姓名->即求兩個集合體的總和,稱之為並集 print(pythoners | linuxers) print(pythoners.union(linuxers)) 1.5 求沒有同時報名兩門課程的學生姓名->稱之為對稱差集 print(pythoners ^ linuxers) print(pythoners.symmetric_difference(linuxers))

3、集合的成員運算(in / not in)

1     a = {1,2,3}
2     print(1 in a)
3     print(1 not in a)

4、集合的含於被含於的關系運算(>,>=,<=,<)

    a = {1,2,3}
    b = {1,2}

    print(a >= b)       ##a包含b
    print(b <= a)       ##b含於a
    print(b < a)
    print(a > b)

5、集合的去重以及集合去重的局限性

** 去重:去重是集合的特性

    a = {1,2,3,4,1,1}       ##去重會將1去除,只保留一個

    print(a)
    {1, 2, 3, 4}

局限性:

1、不能保證原來的順序(因為set是不依賴索引的,所以每次打印順序不一樣,所以集合是無序的)

2、不能針對可變類型去重(list,dict等可變類型不能去重)

6、集合的內置方法(添加,刪除)元素,add,update,pop,remove,discard

add 添加元素

    s={1,2,3}
    s.add(4)        ##在集合後面插入元素
    s.add(hello)
    print(s)   ##{1, 2, 3, 4, ‘hello‘}

update  添加元素

    s1={1,2,3,4,5}
    s1.update({3,4,5,6,7})      ##調用for循環逐個添加
    s1.update(hello)          ##調用for循環,添加h e l l o 字符串
    s1.add(aaa)               ##添加字符串‘aaa‘到s1
    print(s1)                   ##{1, 2, 3, 4, 5, 6, 7, ‘e‘, ‘l‘, ‘o‘, ‘h‘, ‘aaa‘}

pop     隨機刪除集合中的元素

    s = {1,2,3}
    s.pop()

remove  指定元素刪除,不存在則報錯

    s = {1,2,3}
    s.remove(1)     ##存在則刪除
    s.remove(5)     ##不存在報錯

discard 指定元素刪除,不存在也不報錯

    s = {1,2,3}
    s.discard(1)     ##存在則刪除
    s.discard(5)     ##不存在也不報錯


info.clear()        ##清空集合
info.copy()         ##復制一個集合

# 循環

    s={egon,alex,wxx,lxx}

    for item in s:
        print(item)

# 計算長度

    s={egon,alex,wxx,lxx}
    print(len(s))

去重的兩種需求:

1,全部為不可變類型,並且去重後不要求順序

技術分享圖片
    info = {1,1,2,3,2,yexinlei,2.1,aaa,(oldboy,egon)}
    info=set(info)
    print(info)
View Code

2,包含可變類型(list,dict)並且要求保證去重後保留順序

技術分享圖片
info=[
    {name:egon,age:18},
    {name:alex,age:73},
    {name:egon,age:18},
    {name: lxx, age: 19},
    {name:egon,age:18},
    {name:lxx,age:19},
]

l=[]

for dic in info:
    if dic not in l:            ##判斷不存在重復則添加
        l.append(dic)

info=l                          ##重新賦值給info
print(info)
View Code

set()

【python基礎】集合類型