Python集合

本章介绍了集合,集合最擅长的地方在于它可以排重,求交集并集和补集。

可以使用{} 或者 set()创建集合,创建空集合必须是set(),因为{}是空字典

常用函数与方法

添加元素

  • add
1
2
3
A = set('abcd')
A.add('e')
print(A) # {'b', 'c', 'd', 'a', 'e'}
  • update
1
2
3
A = set('abcd')
A.update('g')
print(A) # {'g', 'c', 'd', 'a', 'b'}

移除元素

  • remove

    • 元素不存在,则会发生错误。
    1
    2
    3
    4
    A = set('abcd')
    A.remove('a')
    print(A) # {'c', 'd', 'b'}
    A.remove('g') # KeyError: 'g'
  • discard

    • 如果元素不存在,不会发生错误。
    1
    2
    3
    4
    A = set('abcd')
    A.discard('a')
    A.discard('g')
    print(A) # {'c', 'd', 'b'}
  • pop

    • 随机删除集合中的一个元素
    1
    2
    3
    A = set('abcd')
    A.pop()
    print(A) # {'d', 'b', 'a'}

计算集合元素个数

  • len
1
2
A = set('abcd')
print(len(A)) # 4个元素

清空集合

  • clear
1
2
3
A = set('abcd')
A.clear()
print(A) # 变成了空集合 set()
  • del 集合名字
1
2
3
A = set('abcd')
del A # 删除后A 就不存在了
print(A) # NameError: name 'A' is not defined

判断元素是否在集合中存在

  • in 与 not in
1
2
3
A = set('abcd')
print('e' in A) # False
print('a' in A) # True

将集合变为不可变数据类型

  • frozenset
1
2
3
4
5
A = set('abcd')
B = frozenset(A)
print(B,type(B)) # frozenset({'c', 'a', 'b', 'd'}) <class 'frozenset'>
print(B.__hash__()) # -2156020053626062124
# print(A.__hash__()) # 报错 可变数据类型是不可hash的

集合运算 <> & ^ | -

判断子集与超集 < > 或 issubset issuperset

1
2
3
4
5
6
7
A = set('abcd')
B = set('bd')
print(A < B) # False
print(A > B) # True
print(A.issubset(B)) # False
print(B.issubset(A)) # True
print(A.issuperset(B)) # True

求交集 & 或 intersection

1
2
3
4
5
6
7
A = {i for i in range(1,10,2)}
print(A) # {1, 3, 5, 7, 9}
B = {i for i in range(5,15,2)}
print(B) # {5, 7, 9, 11, 13}

print(A & B) # {9, 5, 7}
print(A.intersection(B)) # {9, 5, 7}

求反交集 ^ 或者 symmetric_difference

1
2
3
4
5
6
7
A = {i for i in range(1,10,2)}
print(A) # {1, 3, 5, 7, 9}
B = {i for i in range(5,15,2)}
print(B) # {5, 7, 9, 11, 13}

print(A ^ B) # {1, 3, 11, 13}
print(A.symmetric_difference(B)) # {1, 3, 11, 13}

求并集 | 或 union

1
2
3
4
A = set('abcde')
B = set('defg')
print(A | B) # {'b', 'd', 'a', 'g', 'c', 'e', 'f'}
print(A.union(B)) # {'b', 'd', 'a', 'g', 'c', 'e', 'f'}

求差集 - 或 difference

1
2
3
4
5
A = set('abcde')
B = set('defg')
# A有B没有
print(A - B) # {'b', 'a', 'c'}
print(A.difference(B)) # {'b', 'a', 'c'}

练习

  • 判断一个字典中是否有这些key: ‘AAA’,’BB’,’C’,’DD’,’EEE’(不使用for while)
1
2
3
4
5
利用集合判断交集   and
dic = {'AAA':666}
s1 = {'AAA','BB','C','DD','EEE'}
s2 = set(dic.keys())
print(s1 and s2)
-------------The End-------------

本文标题:Python集合

文章作者:Naqin

发布时间:2019年03月26日 - 14:03

最后更新:2019年11月05日 - 01:11

原始链接:https://chennq.top/learn-python/20190326-python-set.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Naqin wechat
欢迎看官加我微信!
坚持原创技术分享,您的支持将鼓励我继续创作!
0%