set是python基本数据类型中的一种集合类型,是一种无序、不重复元素集,用{}表示,没有哈希值。
一、基本操作
(一) 集合创建
可使用python内置函数set()创建,也可以直接创建。
# set 是基本数据类型中的一种基本类型 # set()函数创建集合 d = [12,43,2] s = set(d) print(s,type(s)) #{2, 43, 12} <class 'set'> s = set('girl') print(s) # {'r', 'i', 'g', 'l'} # 直接创建集合 s = {1,2,4,'d'} print(s,type(s)) # {1, 2, 4, 'd'} <class 'set'>
(二) 元素添加
add()将传入的元素作为一个整体添加;update()将传入的元素拆分,作为个体逐个添加。
# 元素添加 # add将传入的元素作为一个整体添加 s = set('boy') print('s = {}'.format(s)) # s = {'b', 'o', 'y'} s.add('python') print('s.add = {}'.format(s)) # s.add = {'b', 'o', 'y', 'python'} # update把传入的元素拆分,作为个体加入 s = set('boy') print('s = {}'.format(s)) # s = {'b', 'o', 'y'} s.update('python') print('s.update = {}'.format(s)) # s.update = {'h', 'o', 'p', 'n', 't', 'b', 'y'}
(三) 元素删除
clear()删除集合内全部元素,remove()删除集合内指定元素。
# 删除 # 删除集合内全部元素 s = set('boy') s.clear() print(s) # set() # 删除集合内指定元素 s = set('boy') print(s) # {'y', 'b', 'o'} s.remove('b') print(s) # {'y', 'o'}
二、常见应用
(一) 逻辑运算
set集合支持求交集(&)、并集(|)、差集(-)、对称差分(^)操作。
s1 = {1,2,3,4,5}
s2 = {'a','b',3,'c'}
# 并集
print(s1|s2) # {1, 2, 3, 4, 5, 'c', 'a', 'b'}
# 交集
print(s1&s2) # {3}
# 差集
print(s1-s2) # {1, 2, 4, 5}
print(s2-s1) # {'a', 'c', 'b'}
# 对称差分
print(s1^s2) # {1, 2, 4, 5, 'c', 'a', 'b'}
print(s2^s1) # {1, 2, 4, 5, 'c', 'a', 'b'}
(二) 去除重复元素
set()常被用来去除海量列表里的重复元素。
# 去除重复元素 s = [43,52,4,4,4,2,5,5,5,66,52,43,0,'r','d','r','d'] set_s = set(s) # print(set_s) # {0, 66, 2, 4, 5, 43, 'd', 52, 'r'} # list_s =list(set_s) # 将集合转成列表 list_s = [i for i in set_s] # 将集合转成列表 print(list_s,type(list_s)) # [0, 66, 2, 4, 5, 43, 'd', 52, 'r'] <class 'list'>
三、支持方法
set()支持len(set)、i in set、for i in set。
作为一个无序集合,set不记录元素位置和插入点,所以不支持index、slice或者其他类序列操作。
s = [43,52,4,4,4,2,5,5,5,66,52,43,0,'r','d','r','d'] set_s = set(s) print(set_s) # {0, 66, 2, 4, 5, 'r', 43, 52, 'd'} # 支持len() print(len(set_s)) # 9 # 支持 i in set if 4 in set_s: print('True') # True # 支持 for for i in set_s: print(i,end='\\') # 0\66\2\4\5\r\43\52\d\
P.S.:
关于frozenset,是冻结的集合,不可改变,有哈希值。使用frozenset的地方都可以用set,但frozenset由于不可改变,常被用于字典的keys,且运行效率比set高。
浙公网安备 33010602011771号