七、python沉淀之路--集合

一、

1、字符串转集合

1 s = 'hello'
2 se = set(s)
3 print(se)
1 {'e', 'o', 'h', 'l'}

2、列表转集合

1 l1 =  ['hello','python','nice']
2 se1 = set(l1)
3 print(se1)
1 {'nice', 'python', 'hello'}

3、add:添加元素

1 s = {1,2,3,4,5,6,}
2 s.add(9)
3 print(s)
1 {1, 2, 3, 4, 5, 6, 9}

4、clear:清空

1 s1 = {1,2,3,4,5}
2 s1.clear()
3 print(s1)
1 set()

5、copy:复制


1 s = {1,2,3,4,5,6,}
2 s0 = s.copy()
3 print(s0)

1 {1, 2, 3, 4, 5, 6}

6、pop:随机删除一个元素

1 s = {'hello',2,'python',3,4,5,6,'china',1}
2 s.pop()
3 print(s)

7、remove:删除指定元素,元素不存在时,会报错

1 s = {'hello',2,'python',3,4,5,6,'china',1}
2 s.remove('python')
3 print(s)
4 s.remove(4)
5 print(s)
6 # s.remove(9)  #会报错
7 # print(s)
1 {1, 2, 3, 4, 5, 6, 'china', 'hello'}
2 {1, 2, 3, 5, 6, 'china', 'hello'}

8、discard:指定删除,元素不存在时,不会报错,会把原集合打印出来

1 s = {'hello',2,'python',3,4,5,6,'china',1}
2 s.discard(2)
3 print(s)
4 s.discard('python')
5 print(s)
6 s.discard(9)
7 print(s)
1 {1, 3, 4, 5, 6, 'hello', 'python', 'china'}
2 {1, 3, 4, 5, 6, 'hello', 'china'}
3 {1, 3, 4, 5, 6, 'hello', 'china'}

9、交集(intersection    & )、并集(union   | )、差集( difference   - )、交叉补集(symmetric_difference)

 1 py_s = {'张三','张思','王五','王六'}
 2 lix_s = {'赵七','赵八','王五','王六' }
 3 print('交集',py_s.intersection(lix_s))
 4 print('交集',py_s & lix_s)
 5 
 6 print('补集',py_s.union(lix_s))
 7 print('补集',py_s | lix_s)
 8 
 9 print('差集', py_s.difference(lix_s))
10 print('差集', py_s - lix_s)
11 print('差集',lix_s.difference(py_s))
12 print('差集',lix_s - py_s)
13 
14 print('交叉补集',py_s.symmetric_difference(lix_s))
15 print('交叉补集',py_s ^ lix_s)
 1 交集 {'王六', '王五'}
 2 交集 {'王六', '王五'}
 3 补集 {'赵八', '王五', '赵七', '王六', '张思', '张三'}
 4 补集 {'赵八', '王五', '赵七', '王六', '张思', '张三'}
 5 差集 {'张思', '张三'}
 6 差集 {'张思', '张三'}
 7 差集 {'赵八', '赵七'}
 8 差集 {'赵八', '赵七'}
 9 交叉补集 {'赵八', '赵七', '张思', '张三'}
10 交叉补集 {'赵八', '赵七', '张思', '张三'}

注:差集的先后顺序不一样,结果也不一样

10、difference_update   :更新完复制,即改变了原来的集合

1 py_s = {'张三','张思','王五','王六'}
2 lix_s = {'赵七','赵八','王五','王六' }
3 py_s.difference_update(lix_s)   #相当于  py_s = py_s - lix_s
4 print(py_s)
1 {'张思', '张三'}

11、issubset:判断子集,issuperset:判断父集

1 s1 = {1,2,3}
2 s2 = {1,2,3,4,5}
3 print('s1是s2的子集',s1.issubset(s2))
4 print('s2是s1的父集',s2.issuperset(s1))
1 s1是s2的子集 True
2 s2是s1的父集 True

12、update:一次性可以更新多个值,即可以通过更新把多个值加入进去

1 s1 = {1,2,3}
2 s2 = {1,2,3,4,5}
3 s1.update(s2)
4 print(s1)
1 {1, 2, 3, 4, 5}

对比add功能,add一次性只能加一个值进去

13、frozenset这是一种特殊的定义集合的方式:它定义的集合不可变

1 s=frozenset('hello')
2 print(s)

二、 集合的一些零散知识汇集

1、集合:具备三个条件:一是由不同元素组成;二是无序;三是其元素只能是数字、字符串、元素

也就是里面的元素必须不可哈希,(哈希简单理解就是  不可变的类型)

2、集合  可以增加、 删除、 但不能修改,所以集合是可变的。

3、集合可用于测试,用  in  来判断某元素是否是里面元素

 

三、字符串、 列表、元素、字典、集合 ,简单总结对比

1、字符串不可用索引来修改,因为不可变,但是可以用索引来取值

2、元组  是对列表的加工,其元素不可被修改,不能被增加 或 删除, 元组最后一个元素后面建议都加一个逗号,方便区分

3、元素 也可以 索引  、 切片 、 for 循环,

4、元组 有序,是可迭代对象

5、字典无序

 

可变:列表、字典

不可变:字符串、元组、数字

 

顺序访问:字符串、数字、元组

映射访问:字典

直接访问:数字

 

存放元素个数

容器类型:列表、元素、字典

元素类型:字符串

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-04-26 11:13  遥望那月  阅读(202)  评论(0编辑  收藏  举报