1.创建集合。
集合是无序的,元素不重复的一种序列。
set() 创建,集合可变。
>>> s = set('abcdef') >>> s {'d', 'c', 'b', 'a', 'e', 'f'} >>> type(s) <class 'set'>
frozenset() 创建是不可变的集合,存在哈希值,可以做字典的key。
>>> s = frozenset('abcdef') >>> s frozenset({'d', 'c', 'b', 'a', 'e', 'f'}) >>> type(s) <class 'frozenset'>
>>> s = set('a') >>> s {'a'} >>> D = {s:1} <span style="white-space:pre"> </span>#错误 Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> D = {s:1} TypeError: unhashable type: 'set' >>> s = frozenset('a') >>> s frozenset({'a'}) >>> D = {s:1}<span style="white-space:pre"> </span>#正确 >>> D {frozenset({'a'}): 1}
不管是set还是frozenset都无法创建一个整数集合。
>>> s = set(1)<span style="white-space:pre"> </span>#错误 Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> s = set(1) TypeError: 'int' object is not iterable >>> s = set('1')<span style="white-space:pre"> </span>#正确 >>> s {'1'}
2.访问集合。
因为集合是无序的可哈希的值,所以不能使用索引值访问集合,可以用循环遍历集合。
>>> s = set('abcdef') >>> s {'d', 'c', 'b', 'a', 'e', 'f'} >>> for i in s: print(i) d c b a e f
3.更新集合。
可以用函数来添加集合成员,或者删除集合成员。
添加
add()
>>> s = set('abc') >>> s {'b', 'c', 'a'} >>> s.add('d') >>> s {'d', 'b', 'c', 'a'}
update()
>>> s = set('abc') >>> s {'a', 'b', 'c'} >>> s.update('de') >>> s {'e', 'd', 'a', 'b', 'c'}
添加重复元素无变化。
>>> s = set('abc') >>> s {'a', 'b', 'c'} >>> s.add('a') >>> s {'a', 'b', 'c'} >>> s.update('a') >>> s {'a', 'b', 'c'}
删除
remove() 只能删除单个元素。
>>> s = set('abc') >>> s {'a', 'b', 'c'} >>> s.remove('a') >>> s {'b', 'c'}
del 删除整个集合
>>> s = set('abc') >>> s {'a', 'b', 'c'} >>> del s >>> s Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> s NameError: name 's' is not defined
frozenset() 创建的不可变。
4.操作符
in
>>> s = set('abc') >>> s {'a', 'b', 'c'} >>> 'a' in s True >>> 'e' in s False
not in
>>> s = set('abc') >>> s {'a', 'b', 'c'} >>> 'a' not in s False >>> 'e' not in s True
> < ==
>>> s1 = set('a') >>> s2 = set('abc') >>> s1 {'a'} >>> s2 {'a', 'b', 'c'} >>> s1 < s2 True >>> s1 > s2 False >>> s1 == s2 False
| 取两个集合的并集
>>> s1 = set('123') >>> s2 = set('abc') >>> s1 {'2', '1', '3'} >>> s2 {'a', 'b', 'c'} >>> s1 | s2 {'2', '3', 'c', '1', 'a', 'b'}
& 取两个集合的交集
>>> s1 = set('aaa123') >>> s2 = set('aaa456') >>> s1 {'3', '2', '1', 'a'} >>> s2 {'5', 'a', '4', '6'} >>> s1 & s2 {'a'}
^ 取两个集合的异或元素(只在一个集合中存在的元素)
>>> s1 = set('aaa123') >>> s2 = set('aaa456') >>> s1 {'3', '2', '1', 'a'} >>> s2 {'5', 'a', '4', '6'} >>> s1 ^ s2 {'4', '2', '5', '3', '6', '1'}
- 取两个集合的差补(指一个有另一个没有的元素)
>>> s1 = set('abc') >>> s2 = set('a') >>> s1 {'a', 'b', 'c'} >>> s2 {'a'} >>> s1 - s2 {'b', 'c'} >>> s2 - s1 set()
|= 取两个集合的并集赋值给第一个集合。
>>> s1 = set('a') >>> s2 = set('1') >>> s1 {'a'} s >>> 2 2 >>> s1 |= s2 >>> s1 {'1', 'a'} >>> s2 {'1'}
&= 取两个集合的交集赋值给第一个集合。
>>> s1 = set('aaa123') >>> s2 = set('aaa456') >>> s1 {'3', '2', '1', 'a'} >>> s2 {'5', 'a', '4', '6'} >>> s1 &= s2 >>> s1 {'a'} >>> s2 {'5', 'a', '4', '6'}
-= 去两个集合的差补赋值给第一个集合
>>> s1 = set('a123') >>> s2 = set('a') >>> s1 {'3', '2', '1', 'a'} >>> s2 {'a'} >>> s1 -= s2 >>> s1 {'3', '2', '1'} >>> s2 {'a'}
^= 取两个集合的异或赋值给第一个集合
>>> s1 = set('abc111') >>> s2 = set('def111') >>> s1 {'1', 'a', 'b', 'c'} >>> s2 {'d', 'f', '1', 'e'} >>> s1 ^= s2 >>> s1 {'d', 'f', 'e', 'c', 'a', 'b'} >>> s2 {'d', 'f', '1', 'e'}
时间: 2024-10-04 09:34:13