集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。

集合分类:可变集合(set)、不可变集合(frozenset),创建方式一样

集合特点:无序,唯一,速度快

 

1.创建集合

>>> s = set('ian')

>>> s

{'a', 'n', 'i'}

>>> len(s)

3

>>> li = ['apple','pear','peach']

>>> s = set(li)

>>> s

{'peach', 'pear', 'apple'}

>>> len(s)

3

 

2.访问集合

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

>>> 'apple' in s

True

>>> 'banana' in s

False

>>> for i in s:

...     print(i)

...

peach

pear

apple

 

3.更新集和内容

add方法:是把要传入的元素做为一个整个添加到集合中

>>> a

{'peach', 'pear', 'apple'}

>>> a.add('banana')

>>> a

{'peach', 'banana', 'pear', 'apple'}

 

update方法:是把要传入的元素拆分,做为个体传入到集合中

>>> a = set(['apple'])

>>> a

{'apple'}

>>> a.update('peach')

>>> a

{'c', 'p', 'apple', 'h', 'e', 'a'}

 

remove方法:删除指定元素

>>> a

{'c', 'p', 'apple', 'h', 'e', 'a'}

>>> a.remove('apple')

>>> a

{'c', 'p', 'h', 'e', 'a'}

 

pop方法:删除一个元素并返回

>>> a

{'h', 'e', 'a'}

>>> c = a.pop()

>>> a

{'e', 'a'}

>>> c

'h'

 

 

#remove和pop什么区别?

#remove只是删掉元素,需要接参数,无返回值

#pop是取出元素并赋值,不需要接参数,有返回值

 

4.集合操作符

交集

>>> a

{'e', 'a'}

>>> b

{'c', 'a', 'b'}

>>> a & b

{'a'}

>>> a.intersection(b)

{'a'}

 

并集(合集)

>>> a | b

{'e', 'a', 'c', 'b'}

 

 

差集

>>> a.difference(b)   #谁.difference, 就是循环的谁

{'e'}

>>> b.difference(a)

{'c', 'b'}

>>> a-b        #同difference

{'e'}

>>> b-a

{'c', 'b'}

 

对称差

#你不在我里面或是我也不在你里面的值,两个集合分别循环一次

#也可以理解为两个集合差集的并集

>>> a.symmetric_difference(b)   #哪个集合在前面都是一样的

{'c', 'e', 'b'}

>>> b.symmetric_difference(a)

{'e', 'c', 'b'}

>>> (a-b)|(b-a)        #两个集合两次差集的并集

{'e', 'c', 'b'}