Python中集合(set)的基本操做以及一些常見的用法

   Python除了List、Tuple、Dict等經常使用數據類型外,還有一種數據類型叫作集合(set),集合的最大特色是:集合裏邊的元素是不可重複的而且集合內的元素仍是無序的,因此通常狀況下集合經常使用的兩個場景是:1.去重(如:列表去重);2.關係測試(如:取交集、取並集、取差集等)python


 1)集合包含一組無序的對象,可使用set()函數來像下邊的方式同樣來建立集合ide

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#建立一個數值集合
set1 = set([1,2,3,4])
#建立一個字符集合  注意:從輸出結果中咱們會看到l只出現了一次
set2 = set("HelloWorld!")
print('set1 %s' % set1)
print('set2 %s' % set2)
'''運行結果
set1 {1, 2, 3, 4}
set2 {'d', 'o', 'e', 'H', 'l', 'W', 'r', '!'}
'''


 2)去重,便可能在一些特殊的場景須要用到,實現去除掉列表中的重複元素函數

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#列表去重比較簡單
list1 = [3,3,3,4,5,3]
set1 = set(list1)
print("list1去重後的set集合:",set1)
#將如中後的集合在轉化成一個新列表
new_list = [i for i in set1]
print("list1去重後的list列表:",new_list)
'''運行結果
list1去重後的set集合: {3, 4, 5}
list1去重後的list列表: [3, 4, 5]
'''


 3)關係測試,即一些集合的最基本操做,如集合取交集、取並集、取差集、判斷一個集合是否是另外一個集合的子集或者父集等。測試

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
set1 = set([1,2,3,4,5])
set2 = set([3,4,5,6,7])
#取交集
set3 = set1.intersection(set2)
# set3 = set1 & ste2  #取交集,與intersection()效果相同
print("set1和set2的交集爲:",set3)
#取並集
set4 = set1.union(set2)
#set4 = set1 | set2   #取並集,與union()效果相同
print("set1和set2的交集爲:",set4)
#取差集    這個地方要稍稍注意一下,防止進坑
set5 = set1.difference(set2)
#set5 = set1 - set2  #取差集 ,與difference()效果相同
print("set1與set2的差集爲:",set5)
set6 = set2.difference(set1)
print("set2與set1的差集爲:",set6)
#對稱差集 -----即去掉兩個集合的共同的部分
set7 = set1.symmetric_difference(set2)
#set7 = set1 ^ set2  #對稱差集, 與symmetric_difference()效果相同
print("去掉兩個集合的共同的部分:",set7)
#判斷是不是set1是不是set2的子集
flag1 = set1.issubset(set2)
print("print(判斷是不是set1是不是set2的子集):",flag1)
#判斷是不是set1是不是set2的父集
flag2 = set1.issuperset(set2)
print("判斷是不是set1是不是set2的父集:",flag2)
'''運行結果以下:
set1和set2的交集爲: {3, 4, 5}
set1和set2的交集爲: {1, 2, 3, 4, 5, 6, 7}
set1與set2的差集爲: {1, 2}
set2與set1的差集爲: {6, 7}
去掉兩個集合的共同的部分: {1, 2, 6, 7}
print(判斷是不是set1是不是set2的子集): False
判斷是不是set1是不是set2的父集: False
'''


 4)集合的一些其它基本操做對象

#!/usr/bin/env python
# -*-coding:UTF-8 -*-
#輸出集合中的元素
#注意集合與列表和元組不一樣,集合是無序的,因此沒法經過數字進行索引獲取某一個元素的值
set1 = set([1,2,3,4])
for i in set1:
    print (i)
#向集合中添加一個元素
set1.add(5)
print("向集合中添加一個元素5後:",set1)
#刪除一個元素
set1.remove(1)
print("從集合中刪除元素1後:",set1)
#計算集合的長度
l = len(set1)
print("集合的長度爲:",l)
#判斷某個元素是否在集合內
flag1 = 2 in set1
print("判斷元素2是否在集合內:",flag1)
#斷某個元素是否不在集合內
flag2 = 3 not in set1
print("判斷元素3是否不在集合內:",flag2)
#對集合進行一次淺複製
set2 = set1.copy()
print("對集合進行一次淺複製:",set2)
'''運行結果以下:
1
2
3
4
向集合中添加一個元素5後: {1, 2, 3, 4, 5}
從集合中刪除元素1後: {2, 3, 4, 5}
集合的長度爲: 4
判斷元素2是否在集合內: True
判斷元素3是否不在集合內: False
對集合進行一次淺複製: {2, 3, 4, 5}
'''

以上是集合(set)的一些比較經常使用操做的示例,對於集合的一些其它操做,這裏就不在一一舉例說明了。索引

相關文章
相關標籤/搜索