11 集合set
集合是无序排列的可哈希的值(无序且不重复的元素的序列),支持集合关系元算(并集,交集),支持成员关系(in,not in),支持迭代,因为集合是无序的,所以不支持索引、切片。
集合类型:set(),frozenset()
Set类型是可变的,可以使用诸如add()和remove())之类的方法更改内容。由于它是可变的,因此它没有哈希值,也不能用作字典键或另一个集合的元素。 Frozenset类型是不可变的且可哈希化的,创建后无法更改其内容,因此,它可以用作字典键或用作另一个集合的元素。
简单理解:不允许重复的列表,且无序。特点就是:元素不重复、无序
可以使用大括号 { } 或者 set() /frozenset()函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set(iterable) :此参数是可迭代的对象,如列表、元组等
>>> s1={11,22,33}
>>> s1
{33, 11, 22}
>>> set() #定义一个空集合
set()
>>> set('spam')
{'m', 'a', 's', 'p'}
>>> set(['a', 'p', 's', 'm'])
{'m', 'p', 's', 'a'}
- add(x):添加一个元素:将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
s1.add(7) s1.add('jerry')
- update(iterable):添加迭代对象(列表,元组,字典)的多个元素:
s1.update(s2)
- remove(x):移除指定的元素:如果元素不存在,报错,返回None
s1.remove('jerry')
- discard(x):丢弃指定的元素:如果元素不存在,也不报错,返回None
s1.discard('jerry')
- pop( ):移除指定元素,修改后并返回移除的元素。如果未指定x,则随机删除一个元素
s1.pop('jerry')
- clear()清除所有元素:
s1.clear()
len(s) 计算元素个数
max(s)
min(s)
x in s、x not in ss.copy()
union(*others)或set | other | ...求并集intersection(*others)或set & other & ...求交集difference(*others)或set - other - ...求差集symmetric_difference(other)或set ^ other求对称差集,返回两个集合中不重复的元素集合。即会移除两个集合中都存在的元素。相当于(s1 - s2)|(s2 - s1)isdisjoint(other)与other是否不相交。 disjoint [dɪs’dʒɔɪnt] adj.不相交的;issubset(other)或set <= other是否是子集;set < other是否是真子集issuperset(other)或
set >= other是否是超集;set > other是否是真超集
类似列表推导式,同样集合支持集合推导式(Set comprehension):
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a {'r', 'd'}