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}
>>> 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'}
>>> 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'}