代码语言:javascript复制
集合:
数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称做集合元素。
集合对象是一组无序排列的可哈希的值。
集合有两种类型:
1、可变集合set
2、不可变集合frozenset
特点:
1、值不可以重复
创建可变集合set
>>> s1 = set('hello')
>>> s1
{'h', 'l', 'o', 'e'} #值不可以重复,所以两个L合并成一个L
创建不可变集合frozenset
>>> s2 = frozenset('hello')
>>> s2
frozenset({'h', 'l', 'o', 'e'})
创建整体集合:
>>> s3 = set(['hello', 'world'])
>>> s3
{'hello', 'world'}
集合类型操作符:
集合支持用in和not in操作符检查chengy
能够通过len()检查集合大小
能够使用for迭代集合成员
不能取切边,没有键
>>> s3 = set(['hello', 'world'])
>>> s3
{'hello', 'world'}
>>> len(s3)
2
>>> for i in s3: #迭代集合成员
... print(i)
...
hello
world
| :联合,取并集 #两个集合合并成一个,相同集合元素合并,可以用函数union表示
>>> a | b
{'e', 'b', 'c', 'a', 'd'}
>>> a.union(b)
{'e', 'b', 'c', 'a', 'd'}
& :交集 #两个集合中都有的元素‘C’,可以用函数intersection表示
>>> a = set('abc')
>>> b = set('cde')
>>> a
{'b', 'c', 'a'}
>>> b
{'e', 'c', 'd'}
>>> a & b
{'c'}
>>> a.intersection(b)
{'c'}
- :差补 #取差异, 可使用函数difference表示。
>>> a - b #b集合中没有a集合当中的那些元素,
{'b', 'a'}
>>> b - a #a集合中没有b集合当中的参数是那些
{'e', 'd'}
>>> a.difference(b)
{'b', 'a'}
集合内建方法:
添加成员:
set.add() #当成一个整体进行添加
>>> a.add('new')
>>> a
{'b', 'new', 'c', 'a'}
批量添加成员:
set.update() #拆分进行添加,添加多个可以使用s3的方式
>>> a.update('new')
>>> a
{'w', 'e', 'b', 'n', 'new', 'c', 'a'}
>>> s3 = set(['hello', 'world'])
>>> s3
{'hello', 'world'}
删除成员:
set.remove() #由于集合是无序的,无法取下标和key,只能指定删除项
>>> a.remove('n')
>>> a
{'w', 'e', 'b', 'new', 'c', 'a'}
子集、超集:
a集合中包含b集合的元素,所以a集合是b集合的超集,b集合是a集合的子集
被包含的是子集,包含别人的是超集
>>> a = set('abcde')
>> b = set('bcd')
>>> a
{'e', 'b', 'c', 'a', 'd'}
>>> b
{'b', 'c', 'd'}
X.issuperset(XX) #判断a集合是否为b集合的超集
>>> a.issuperset(b)
True
>>> b.issubset(a) #判断b集合是否为a集合的子集
True
集合本身是自己的超集和子集