1. 程式人生 > >Python中集合(set)的基本操作以及一些常見的用法

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

python set 集合 集合的一些常見用法

Python除了List、Tuple、Dict等常用數據類型外,還有一種數據類型叫做集合(set),集合的最大特點是:集合裏邊的元素是不可重復的並且集合內的元素還是無序的,所以一般情況下集合常用的兩個場景是:1.去重(如:列表去重);2.關系測試(如:取交集、取並集、取差集等)


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

#!/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)的一些比較常用操作的示例,對於集合的一些其它操作,這裏就不在一一舉例說明了。


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