目录
1:集合的定义及特性
集合(set)是一种唯一的,不可变对象的无序集合,集合是一种可变数据类型。集合中的元素是唯一的,不能重复,并且其中的元素(包含子元素)只能是不可变数据类型(可哈希化的)。集合是无序的,并且不会把键映射到值,所有他们既不是序列也不是映射类型,集合的行为更像是一个有键无值的字典。另外集合本质上具有基本的数学特性。
集合具有如下特性:
A:不可变对象的无序集合,它可变长度,能够任意嵌套。
B:既不能可通过键来访问,也不能通过偏移访问。
2:常用集合字面量及操作
2.1常用集合字面量及操作汇总
操作 | 说明 | 示例 | 结果 |
st=set() | 空集合(注意:{} 是一个空字典 ) | st=set() print(type(st),st) | <class 'set'> set() |
st={1,'2',(3,4)} | 有3个元素的集合 | st={1,'2',(3,4)} print(type(st),st) | <class 'set'> {1, (3, 4), '2'} |
st={1,'2',(3,(3,4))} | 集合嵌套(只能嵌套不可变数据类型) | st={1,'2',(3,(3,4))} print(type(st),st) | <class 'set'> {1, (3, (3, 4)), '2'} |
st=set("1,2,3") st=set([1,2,3])
| 构造方法:可迭代对象 | st=set("1,2,3") print(type(st),st) st=set([1,2,3]) print(type(st),st) | <class 'set'> {'1', ',', '2', '3'} <class 'set'> {1, 2, 3} |
st1 – s2 st1 | s2 st1 & s2 st1 ^ s2
| 集合运算 | s1= {1,2,3,4} s2= {3,4,5,6} print('1---s1',s1) print('2---s2',s2) print('3---s1-s2',s1-s2) print('3---s1|s2',s1|s2) print('3---s1&s2',s1&s2) print('3---s1^s2',s1^s2) | 1---s1 {1, 2, 3, 4} 2---s2 {3, 4, 5, 6} 3---s1-s2 {1, 2} 4---s1|s2 {1, 2, 3, 4, 5, 6} 5---s1&s2 {3, 4} 6---s1^s2 {1, 2, 5, 6} |
|
|
|
|
|
|
|
|
x in st | 成员关系:元素存在测试 | st= {1,2,3,4} print(3 in st) print(8 in st) | True False |
st.add() | 增加元素(元素只能是不可变数据类型) | st= {1,2,3,4} print(st) print(st.add('123')) print(st) st.add([1,2]) | {1, 2, 3, 4} None {1, 2, 3, 4, '123'} Traceback (most recent call last): File "D:\python\集合.py", line 64, in <module> st.add([1,2]) TypeError: unhashable type: 'list' |
st.clear() | 清空所有元素 | st= {1,2,3,4} st.clear() print(st) | set() |
st.copy() | 拷贝集合 | st= {1,2,3,4} st2 = st.copy() st2.add('abc') print('st=',st) print('st2=',st2) | st= {1, 2, 3, 4} st2= {1, 2, 3, 4, 'abc'} |
st.pop() | 删除一个元素 | st= {'99',99,2,3,4,11} print(st) st.pop() print(st) | {2, 99, 3, 4, '99', 11} {99, 3, 4, '99', 11} |
st.remove(x) | 删除指定元素 | st= {'99',99,2,3,4,11} print(st) st.remove(3) print(st) | {2, 3, 99, 4, 11, '99'} {2, 99, 4, 11, '99'} |
st1.union(st2) | 并集,结果生成新的集合,st1,st2中元素不变 | st1 = {1,2,3,4} st2 = {3,4,5,6} print('1---st1',st1) print('1---st2',st2) st3 = st1.union(st2) print('2---st3',st3) print('2---st1',st1) print('2---st2',st2) | 1---st1 {1, 2, 3, 4} 1---st2 {3, 4, 5, 6} 2---st3 {1, 2, 3, 4, 5, 6} 2---st1 {1, 2, 3, 4} 2---st2 {3, 4, 5, 6} |
st1.update(st2) | 把st2合并到st1中去 | st1 = {1,2,3,4} st2 = {3,4,5,6} print('1---st1',st1) print('1---st2',st2) st3 = st1.update(st2) print('2---st3',st3) print('2---st1',st1) print('2---st2',st2) | 1---st1 {1, 2, 3, 4} 1---st2 {3, 4, 5, 6} 2---st3 None 2---st1 {1, 2, 3, 4, 5, 6} 2---st2 {3, 4, 5, 6} |
st ={x*2 for x in range(4) } | 集合迭代 | st ={x*2 for x in range(4) } print(st) | {0, 2, 4, 6} |
查看更多方法:
print([item for item in dir(set) if not item.startswith('__') ])