一、set()函数:可变集合
1.set()定义
>>> s = {1,2,3}
>>> type(s)
<class 'set'>
2.list列表、tuple元组、dict字典、str字符串,均可以转换为set集合
- 注意:dict字典转为set集合时,只会取key值,value会被舍弃
>>> s = set([1,1,2,2])
>>> s
{1, 2}
>>> s = set((1,1,3,3,2))
>>> s
{1, 2, 3}
>>> s = set({1:2,3:4})
>>> s
{1, 3}
>>> s = set("abcdef")
>>> s
{'b', 'a', 'e', 'c', 'f', 'd'}
3.add()方法:添加元素
- 整体添加(不能添加list,dict,可以添加tuple、str)
>>> s = {1,2,3}
>>> s.add(1)
>>> s
{1, 2, 3}
>>> s.add(5)
>>> s
{1, 2, 3, 5}
>>> s = {1,2,3}
>>> s.add((3,4,5))
>>> s
{1, 2, 3, (3, 4, 5)}
>>> s.add("abcd")
>>> s
{1, 2, 3, 'abcd', (3, 4, 5)}
>>> s.add([7,8,9])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> s.add({1:2})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
5.update()方法:---->将元素拆分后,再添加
- 拆开添加(可以添加list、tuple、dict、str)
>>> s = {1,2,3}
>>> s.update([4,5,6])
>>> s
{1, 2, 3, 4, 5, 6}
>>> s.update({10:20,30:40})
>>> s
{1, 2, 3, 4, 5, 6, 10, 30}
>>> s.update((7,8))
>>> s
{1, 2, 3, 4, 5, 6, 7, 8, 10, 30}
>>> s.update("abcdef")
>>> s
{1, 2, 3, 4, 5, 6, 7, 8, 'b', 10, 'a', 'e', 'c', 'f', 30, 'd'}
>>>
6.remove()方法:删除元素
- 删除不存在的元素,会报异常
- 可以用in先判断元素在set里,再进行删除
>>> s = {1,2,3}
>>> s.remove(1)
>>> s
{2, 3}
>>> s.remove(5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 5
7.del()方法:删除集合
>>> s = {1,2,3}
>>> s
{1, 2, 3}
>>> del s
>>> s
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 's' is not defined
>>>
8.集合元素遍历
- 也可以把集合先转成list进行操作,再转回set
>>> s = {1,2,3}
>>> for i in s:
... print(i)
...
1
2
3
>>>
9.discard()方法:查找元素并删除
- 删除不存在的元素,也不会报错
- 没有返回值
>>> a = {1,2,3,4,-1}
>>> a.discard(4)
>>> a
{1, 2, 3, -1}
>>> a.discard(4)
>>> a
{1, 2, 3, -1}
>>> b = a.discard(2)
>>> b
10.pop()方法:弹出一个元素并删除
>>> s = {1,2,3}
>>> s.pop()
1
>>> s
{2, 3}
11.clear()方法:清空集合
>>> s = {1,2,3}
>>> s.clear()
>>> s
set()
>>>
12.copy()方法:复制/备份
- 两个集合相等,但不是同一个集合
>>> a = {1,2,3}
>>> b = a.copy()
>>> a
{1, 2, 3}
>>> id(a)
2613180691400
>>> b
{1, 2, 3}
>>> id(b)
2613180691624
>>>
13.交集(&)、并集(|)、差集(—)
集合A:1,2,3
集合B:3,4,5
- A和B的交集:3
- A和B的并集:1,2,3,4,5
- a和B的差集:1,2
- b和a的差集:4,5
>>> a = {1,2,3}
>>> b = {3,4,5}
>>> a&b
{3}
>>> a|b
{1, 2, 3, 4, 5}
>>> a-b
{1, 2}
>>> b-a
{4, 5}
14.difference(与差集效果一样)
>>> s1=set([1,2,3])
>>> s==set([3,4,5])
>>> s2=set([3,4,5])
>>> s1.difference(s2)
{1, 2}
>>> s1-s2
{1, 2}
15.包含关系(大于号表示)
>>> s1={1,2,5}
>>> s2={1,2,3}
>>> s1>s2
False
>>> s2>s1
False
16.判断是否相等
>>> s1 = {1,2,3}
>>> s2 = {1,2,3}
>>> s1 == s2
True
17.超级和子集()
- issuperset() ----》和大于号功能类似
- issubset() ----》和小于号功能类似
>>> s1 = {1,2}
>>> s2 = {1,2,3}
>>> s2.issuperset(s1)
True
>>> s1.issubset(s2)
True
>>> s2 > s1
True
>>> s1 < s2
True
二、frozenset()函数:不可变集合
- 没有add、update方法
>>> frozenset([1,2,3,2,3,4])
frozenset({1, 2, 3, 4})
>>> frozenset({1:2,3:4})
frozenset({1, 3})