python:数据类型set

时间:2021-01-09 12:40:01

一、集合

  集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变数据类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:

    去重,把一个列表变成集合,就自动去重了

    关系测试,测试两组数据之前的交集、差集、并集等关系。

1.集合的创建

 set1 = set({1, 2, 'barry'})
set2 = {1, 2, 'barry'}
print(type(set1),type(set2))#相同
print(id(set1),id(set2))#不同

2.去重

 li = [11, 22, 33, 11, 22, 55, 66]
li = set(li)
print (li, type(li))

3.集合的增

    add

 set3 = {'alex', 'wusir', 'taibai','egon'}
set3.add('女神')
print(set3)

    update(迭代的增加)

 set3 = {'alex', 'wusir', 'taibai', 'egon', 'bar'}
set3.update('abcd')
print(set3)
set3.update([1, 2, 3])
print(set3)
set3.update((1, 'hah'))
print(set3)
set3.update(123456)#不可被迭代的添加
print(set3)

4.删除

    remove

 set3.remove('alex')
set3.remove('hahah')#删除没有的会报错

    pop(随机删除)

 set3 = {'alex', 'wusir', 'taibai', 'egon', 'bar'}
set3.pop()
s = set3.pop()#有回值,返回删除的值
print(s)

    clear(清空)

 set3.clear()#结果set3()
print(set3)

5.查

    用for查

  for i in set3:
print(i)
print(type(i))#i是什么类型就显示什么类型

6.关系测试

    交集& intersection

 set1 = {1, 2, 3, 4, 5}
set2 = {1, 6, 7, 8, 9} print(set1 & set2)
print(set1.intersection(set2))

    反交集  ^   symmetric_difference

 set1 = {1, 2, 3, 4, 5}
set2 = {1, 6, 7, 8, 9} print(set1 ^set2)
print(a,type(a))
print(set1.symmetric_difference(set2))

    并集  |  union

 set1 = {1, 2, 3, 4, 5}
set2 = {1, 6, 7, 8, 9}
4 print(set1 |set2)
5 print(set1.union(set2))

    差集  -

 set1 = {1, 2, 3, 4, 5}
set2 = {1, 6, 7, 8, 9} print(set1 - set2) #{2, 3, 4, 5}

    子集  issubset

 set3 = {1, 2, 3}
set4 = {1, 2, 3, 4, 5, 6} print(set3.issubset(set4))#set3是se4的子集
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))