1. 程式人生 > >Python記錄3:集合

Python記錄3:集合

#一,集合型別
###找出兩個集合的交集並將結果打印出來
# python_stu=['egon','alex','kevin','王大炮','李二丫']
# linux_stu=['張鐵蛋','劉銅蛋','趙金蛋','alex','kevin','oldboy']
# res=[]
# for stu1 in python_stu:
# if stu1 in linux_stu:
# res.append(stu1)
# print(res)
#
#2 集合
# 定義方式:在{}用逗號分割開多個元素,但是集合內元素必須要滿足一下特點
#2.1: 必須是不可變型別
#2.2: 不能重複
#2.3: 集合內元素無序
# s={1,1,1,1,1,1} #s=set({1,1,1,1,1,1})
# print(s)
# print(type(s))

# s1=set('hello')
# print(s1)
# print(type(s1))

# s={}
# print(type(s))
#這樣定義一個空的,打印出來的是一個字典
#要定義一個集合必須這樣定義
# s=set()
# print(s,type(s))

# s={'egon','alex','kevin','oldboy'}
# print(s,type(s))

# 3、常用操作+內建的方法
#優先掌握的操作:(*****)
#1、長度len
# s={'egon','alex','kevin','oldboy'}
# print(len(s))
#2、成員運算in和not in
# s={'egon','alex','kevin','oldboy'}
# print('egon' in s)

# python_stu={'egon','alex','kevin','王大炮','李二丫'}
# for item in python_stu:
# print(item)
# linux_stu={'張鐵蛋','劉銅蛋','趙金蛋','alex','kevin','oldboy'}
#3、|合集:取兩個集合合併後的結果,例如:取老男孩所有報名的學生姓名
# print(python_stu | linux_stu)
# print(python_stu.union(linux_stu))

# python_stu=python_stu.union(linux_stu)
# python_stu.update(linux_stu)
# print(python_stu)

#4、&交集: 取兩個集合共同的部分,例如:取同時報名兩門課程的學員
# print(python_stu & linux_stu)
# print(python_stu.intersection(linux_stu))
# python_stu.intersection_update(linux_stu) #python_stu=python_stu.intersection(linux_stu)
# print(python_stu)

#5、-差集: 取存在於左邊結合但不存在與右面集合的元素,例如:取只報名python課程的學員
# print(python_stu - linux_stu)
# print(python_stu.difference(linux_stu))

#6、^對稱差集:例如:取沒有同時報名兩門課程的學員
# print((python_stu - linux_stu) | (linux_stu - python_stu))
# print(python_stu ^ linux_stu)
# print(python_stu.symmetric_difference(linux_stu))

#7、==判斷是否相等,集合中只要元素相等,集合就相等,集合是無序的
# s1={1,2,3}
# s2={3,2,1}
# print(s1 == s2)

#8、父集:>= print(s1.issuperset(s2))
#9、子集:<= print(s2.issubset(s1))
# s1={1,2,3,4}
# s2={1,2,3}
# print(s1 >= s2)
# print(s1.issuperset(s2))
# print(s2.issubset(s1))

# 集合型別其他內建方法(**)
##pop 從最後面彈出來 一個一個按照順序彈出來
# s1={'a','b','c'}
# print(s1.pop())
# print(s1)
# print(s1.pop())
# print(s1)
# print(s1.pop())
# print(s1)

# res=s1.remove('b')
# print(s1)
# print(res)
# s1.remove('d')
# s1.discard('d')
# print(s1)

# s1.add('d')
# print(s1)

# s1={1,2,3}
# s2={6,4,5}
# print(s1.isdisjoint(s2))
#判斷兩個集合是否有交集
# ======================================該型別總結====================================
# 集合是存多個值的
# 無序的
# 可變型別(1、可變:值變,id不變。可變==不可hash 2、不可變:值變,id就變。不可變==可hash)

# s1={1,2,3}
# print(id(s1))
# s1.update({4,5,6})
# print(s1)
# print(id(s1))

# 去重:
# stus=['egon','egon','egon','kevin',1,2,3,'alex']
# res=set(stus)
# print(list(res))

#去重的侷限性:
#1. 被去重的元素必須是不可變型別
#2. 不能保證原來的順序

# l=[
# {'name':'egon','age':18,'sex':'male'},
# {'name':'alex','age':73,'sex':'male'},
# {'name':'kevin','age':20,'sex':'female'},
# {'name':'egon','age':18,'sex':'male'},
# {'name':'egon','age':18,'sex':'male'},
# ]
# # print({'name':'egon','age':18,'sex':'male'} in l)
# l1=[]
# for dic in l:
# if dic not in l1:
# l1.append(dic)
# print(l1)