Python基础-集合与不可变集合

集合与不可变集合的关系和列表与元组之间的关系类似。


先总结一下集合

集合是一个无序的可变的序列。集合中的元素必须是可hash的,即不可变的数据类型。

空集合

a=set()

注意a={}创建的是一个空字典。

也可以用set()转化为集合

b=[1,2,3,4]

a=set(b)

a

{1,2,3,4}


还可以用{}来创建一个集合

a={1,2,3,4,1}

a

{1,2,3,4}

与字典一样,因为集合是无序的,所以当有重复元素时,只保留其中一个。



与数学中集合的定义类似,python中的集合也有交,并,差,包含等操作。


1.交  a.intersection(b) 或 a&b

返回a,b中的所有相同的元素组成的集合,且只保留一个.

a={1,2,3,4}

b={2,3,4,5}

a&b

{2,3,4}


2.并  a.union(b) 或 a|b

返回a,b中所有元素组成的集合,相同元素只保留一个。

a|b

{1,2,3,4,5}


3.差 a.difference(b) 或 a-b

返回只在a中而不在b中的元素组成的集合。

a-b

{1}


4.对称差  a.symmetric_difference(b) 或 a^b

返回a,b中所有不相同的元素组成的集合。

a^b

{1,5}


5.包含 b.issubset(a) 或 b<=a

判断b是不是a的子集,返回一个bool值。

真子集用<或>号判断。


改变集合的方法

6.添加元素 a.add()

向a中添加一个不可变的元素。size(a):=size(a)+1

a={1,2,3,4}

a.add(5)

a

{1,2,3,4,5}


7.批量添加元素 a.update(seq)

将seq中的与a中元素不同的元素全部添加到a中。seq可以是任意的序列。

a={1,2,3,4}

a.update((1,5,6))

a

{1,2,3,4,5,6}


8.批量删除元素 a.defference_update(seq)

去除a中所有与seq中相同的元素。


9.删除单一元素 a.remove()   a.discard()

remove删除a中的一个元素,若不存在就报错。

discard删除a中的一个元素,若不存在不会报错。


10.随机删除并弹出一个元素 a.pop()

由于set没有顺序,不能像列表一样按照index删除弹出元素,因此pop随机删除并弹出一个元素。a为空集时会报错。

a={1,2,3,4,5}

a.pop()

1



再来总结一下不可变集合

不可变集合就是一个无序的不可变的集合

用frozenset(seq)创建

a=frozenset([1,2,3,(1,2,4)])

a

frozenset({1,2,3,(1,2,4)})

元素也只能是可hash的

frozenset([1,2,3,[1,2,4]])

error

主要用来做字典的键。。与tuple的区别在于无序,元素不可重复,且元素只能是不可变类型。

你可能感兴趣的:(Python基础-集合与不可变集合)