集合(set)及其魔法

来源:互联网 发布:伊顿公学 知乎 编辑:程序博客网 时间:2024/05/16 13:46

集合(set)及其魔法


集合定义及特性

定义:由任意个不同的元素聚集而成,集合中是一组无序的可hash的值,可以作为字典的key

特性:
- 不同元素、无序、元素必须为不可变类型的数据
- 集合的目的是通过进行集合间的关系运算来判断集合间的关系,故无需纠结集合中的单个值

集合的魔法

1. add() 向集合中添加元素,如果已存在相同元素则去重

s = {1,2,3,4,4}print(s)s.add(3)print(s)s.add('3')print(s)#{1, 2, 3, 4}#{1, 2, 3, 4}#{'3', 1, 2, 3, 4}

2. clear() 清空集合

3. copy() 复制集合

s1 = s.copy()print(s1)#{'3', 1, 2, 3, 4}

4. 删除元素

4.1 pop() 随机删除

4.2 remove() 指定删除,如果指定的元素不存在,则报错

s = {1,2,3,4,5}s.remove(3)print(s)#{1, 2, 4, 5}

***4.3 discard() 指定删除,如果指定的元素不存在,不报错

s = {1,2,3,4,5}s.discard(123)print(s)#{1, 2, 3, 4, 5}

5. 集合的交集

5.1 ” & ” 符号

x = {1,3,5,7}y = {2,3,4,5,6}b = x & yprint(b)#{3, 5}

5.2 intersection() 交集

x = {1,3,5,7}y = {2,3,4,5,6}a = x.intersection(y)print(a)#{3, 5}

6. 集合的并集

6.1 ” | ” 符号

x = {1,3,5,7}y = {2,3,4,5,6}a = x | yprint(a)#{1, 2, 3, 4, 5, 6, 7}

6.2 union 并集

x = {1,3,5,7}y = {2,3,4,5,6}a = x.union(y)print(a)#{1, 2, 3, 4, 5, 6, 7}

7. 集合的差集

7.1 ” - ” 符号

  • x - y 结果:
x = {1,3,5,7}    y = {2,3,4,5,6}    a = x - y    print(a)    #{1, 7}

7.2 difference 差集

  • y -x 结果:
x = {1,3,5,7}    y = {2,3,4,5,6}    a = y.difference(x)    print(a)    #{2, 4, 6}

8. 集合的补集

8.1 ” ^ ” 符号

8.2 symmetric_difference() 补集

x = {1,3,5,7}y = {2,3,4,5,6}a = x | yprint('a',a)b = x & yprint('b',b)c = a - bprint('c',c)d = x.symmetric_difference(y)print('d',d)e = x ^ yprint('e',e)#a {1, 2, 3, 4, 5, 6, 7}#b {3, 5}#c {1, 2, 4, 6, 7}#d {1, 2, 4, 6, 7}#e {1, 2, 4, 6, 7}

9. update() 可以同时更新多个值,并且更新运算过程的结果

9.1 x的值不会因为计算过程而发生变化

x = {2,3}y = {1,2,3,4}a = x & yprint('x',x)#x {2, 3}

x的值随着计算过程而更新

b = x.update(y)print('x',x)#x {1, 2, 3, 4}

9.2 update与add的区别是,upate可同时传多个元素,add只能传一个元素

x = {2,3}c = x.update([4,5,6,7])print(x)#{1, 2, 3, 4, 5, 6, 7}

10. frozenset() 不可变集合

a = frozenset ([1,2,3,4])print(a)#frozenset({1, 2, 3, 4})