一以贯之

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))

  

 

posted on 2018-03-26 20:25  凡夫or俗子  阅读(168)  评论(0编辑  收藏  举报