python:数据类型set
一、集合
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变数据类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系。
1.集合的创建
1 set1 = set({1, 2, 'barry'}) 2 set2 = {1, 2, 'barry'} 3 print(type(set1),type(set2))#相同 4 print(id(set1),id(set2))#不同
2.去重
1 li = [11, 22, 33, 11, 22, 55, 66] 2 li = set(li) 3 print (li, type(li))
3.集合的增
add
1 set3 = {'alex', 'wusir', 'taibai','egon'} 2 set3.add('女神') 3 print(set3)
update(迭代的增加)
1 set3 = {'alex', 'wusir', 'taibai', 'egon', 'bar'} 2 set3.update('abcd') 3 print(set3) 4 set3.update([1, 2, 3]) 5 print(set3) 6 set3.update((1, 'hah')) 7 print(set3) 8 set3.update(123456)#不可被迭代的添加 9 print(set3)
4.删除
remove
1 set3.remove('alex') 2 set3.remove('hahah')#删除没有的会报错
pop(随机删除)
1 set3 = {'alex', 'wusir', 'taibai', 'egon', 'bar'} 2 set3.pop() 3 s = set3.pop()#有回值,返回删除的值 4 print(s)
clear(清空)
1 set3.clear()#结果set3() 2 print(set3)
5.查
用for查
1 for i in set3: 2 print(i) 3 print(type(i))#i是什么类型就显示什么类型
6.关系测试
交集& intersection
1 set1 = {1, 2, 3, 4, 5} 2 set2 = {1, 6, 7, 8, 9} 3 4 print(set1 & set2) 5 print(set1.intersection(set2))
反交集 ^ symmetric_difference
1 set1 = {1, 2, 3, 4, 5} 2 set2 = {1, 6, 7, 8, 9} 3 4 print(set1 ^set2) 5 print(a,type(a)) 6 print(set1.symmetric_difference(set2))
并集 | union
1 set1 = {1, 2, 3, 4, 5} 2 set2 = {1, 6, 7, 8, 9}
4 print(set1 |set2)
5 print(set1.union(set2))
差集 -
1 set1 = {1, 2, 3, 4, 5} 2 set2 = {1, 6, 7, 8, 9} 3 4 print(set1 - set2) #{2, 3, 4, 5} 5
子集 issubset
1 set3 = {1, 2, 3} 2 set4 = {1, 2, 3, 4, 5, 6} 3 4 print(set3.issubset(set4))#set3是se4的子集 5 print(set2.issubset(set1))
超集 issupperset
set3 = {1, 2, 3} set4 = {1, 2, 3, 4, 5, 6} print(set4.issuperset(set3))#set4是set3的超集
frozenset 冻结结合(顺序没有冻结)
s = frozenset('barry') print(s, type(s))