集合的定义

   由一个或多个确定的元素所构成的整体

可变集合

1 s=set('hello')
2 print(s)        # {'e', 'l', 'o', 'h'}
3 
4 s=set(['alex','alex','Lucy'])
5 print(s)        # {'alex', 'Lucy'}
6 
7 s = {1,2,3,4,5,6,7}
8 print(s)

不可变集合

1 s = {1,2,3,4,5,6,7}
2 print(s)        # {1, 2, 3, 4, 5, 6, 7}
3 # 改为不可变集合
4 fs = frozenset(s)
5 print(fs)       # frozenset({1, 2, 3, 4, 5, 6, 7})

集合的特性

   1、确定性(元素必须可hash)

   2、互异性(去重)

   3、无序性(集合中的元素没有先后之分,如集合{3,4,5}和{3,5,4}算作同一个集合)

    注:集合存在的意义:去重和关系运算

去重

1 p_li = [1,2,3,4,3,5]
2 # 去重
3 p_s = set(p_li)
4 print(p_s)      # {1, 2, 3, 4, 5}

集合的关系运算

 1 p_s1 = {'张三','王五','李四'}
 2 p_s2 = {'李四','王五','赵六'}
 3 # 交集
 4 print(p_s1.intersection(p_s2))  # {'李四', '王五'}
 5 print(p_s1&p_s2)                # {'李四', '王五'}
 6 # 并集
 7 print(p_s1.union(p_s2))         # {'张三', '李四', '王五', '赵六'}
 8 print(p_s1|p_s2)                # {'张三', '李四', '王五', '赵六'}
 9 # 差集【A-交集】
10 print(p_s1.difference(p_s2))    # {'张三'}
11 print(p_s1-p_s2)                # {'张三'}
12 # 对称差集【并集-交集】
13 print(p_s1.symmetric_difference(p_s2))  # {'赵六', '张三'}
14 print(p_s1^p_s2)                        # {'赵六', '张三'}
15 # A更新为交集
16 # p_s1.intersection_update(p_s2)
17 # A更新为差集
18 # p_s1.difference_update(p_s2)
19 # A更新为对称差集
20 # p_s1.symmetric_difference_update()
21 # print(p_s1)

集合的内置函数

常见

 1 s = {1,2,3,4,5,6,7}
 2 print(s)        # {1, 2, 3, 4, 5, 6, 7}
 3 # 添加
 4 s.add('a')      
 5 print(s)        # {1, 2, 3, 4, 5, 6, 7, 'a'}
 6 # 清空
 7 s.clear()
 8 print(s)        # set()
 9 
10 s = {1,2,3,4,5,6,7}
11 # 随机删除
12 s.pop()
13 print(s)
14 s = {1,2,3,4,5,6,7}
15 # 指定删除,若无报错
16 s.remove(5)
17 print(s)
18 s = {1,2,3,4,5,6,7}
19 # 指定删除,若无不报错
20 s.discard(8)
21 print(s)

补充

 1 s = {1,2}
 2 print(s)        # {1, 2}
 3 # 单个元素的增加
 4 s.add(3)
 5 print(s)        # {1, 2, 3}
 6 # 多个元素的增加
 7 s.update([3,4],[7,8])
 8 print(s)        # {1, 2, 3, 4, 7, 8}
 9 s.update('hello')
10 print(s)        # {1, 2, 3, 4, 'o', 7, 8, 'e', 'l', 'h'}

其他

1 p_s1 = {'张三','王五','李四'}
2 p_s2 = {'李四','王五','赵六'}
3 # 判断两个集合是不是相交
4 print(p_s1.isdisjoint(p_s2))
5 # 判断集合是不是包含其他集合
6 print(p_s1.issuperset(p_s2))
7 # 判断集合是不是被其他集合包含
8 print(p_s2.issubset(p_s2))

 

posted on 2018-03-14 18:01  &&||!  阅读(131)  评论(0编辑  收藏  举报