不同的元素组成一起形成集合

0.集合的主要作用:

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

(2)关系测试,测试两组数据之间的交集,并集,差集等关系

1.如何创建一个集合

  集合的创建方法只有一种,如:

  a=set([1,2,3])

  b=frozenset('tony')

  set()函数内部只能包含一个参数,这个参数所包含的值必须是可哈希的,即不可变类型(整型,字符串,元组,frozenset),不可以c=set([[1,2],5,'tony']),会报错。同时set是不可哈希的,frozenset是可哈希的,但是内部元素都必须是可哈希的

记忆:不可变类型是可哈希的,可变类型是不可哈希的,一定要反着记忆

  一个集合内部的元素不可以是重复的,所以当把一个序列变为集合时,set()函数会去除重复的元素

a=[1,2,3]
b=set(a)
print(b)#输出{1,2,3}

c=[1,2,3,1]
d=set(c)
print(d)#输出{1,2,3}

2.集合的分类

  可变集合(set):可以添加和删除元素,是非可哈希的,不能用作字典的键,也不能做其他集合的元素

  不可变集合(frozenset):与上面相反

  这两个集合的关系就像列表和元组的关系

3.访问集合

  由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

s=set('chen')
print('c' in s)#输出True
print('a' in s)#输出False
s=set('chen')
for i in s:
    print(i)
#输出
h
n
c
e

4.更新集合

  可使用以下方法来更新集合:

  s.add()

  s.update()

  s.remove()

  s.pop()

  s.clear()

 

s=set([1,2,3,4])
s.add('chen')
print(s)#输出{1, 2, 3, 4, 'chen'}

s.update('tony')
print(s)#输出{1, 2, 3, 4, 'y', 'n', 'chen', 'o', 't'}

s.remove(
'chen') print(s)#输出{1, 2, 3, 4, 'y', 'n', 'o', 't'} a=s.pop() print(s,a)#输出{2, 3, 4, 'y', 'n', 'o', 't'} 1

s.clear()
print(s)#输出set()

5.集合类型操作符

  1   in ,not in
  2   集合等价与不等价(==, !=)
  3   关系测试,测试两组数据之间的交集(&),并集(|),差集(-),对称差集(^),超集(>),子集(<)等关系

  

a=set([1,2,3,4,5])
b=set([4,5,6,7,8])

#交集(属于a,也属于b)
print(a.intersection(b))
print(a&b)#{4, 5}

#并集(属于a,或属于b)
print(a.union(b))
print(a|b)#{1, 2, 3, 4, 5, 6, 7, 8}

#差集(属于一个集合但不属于另一个集合)
print(a.difference(b))
print(a-b)#{1, 2, 3}
print(b.difference(a))
print(b-a)#{8, 6, 7}

#对称差集(也称为反向交集)(除去两个集合共有的元素之后形成的集合)
print(a.symmetric_difference(b))
print(a^b)#{1, 2, 3, 6, 7, 8}


a=set([1,2,3,4,5])
b=set([1,2,3,4,5])

#超集(a是否完全包含b)
print(a.issuperset(b))#True
print(a>b)#False
print(a>=b)#True

#子集(b是否完全被a包含)
print(b.issubset(a))#True
print(b<a)#False
print(b<=a)#True

 

posted on 2018-04-22 18:20  行走的cd  阅读(154)  评论(0编辑  收藏  举报