Python学习笔记4:集合方法

集合 set

Python的集合是一个无序不重复集基本功能为关系测试和消除重复元素集合对象还支持数学集合概念中的运算

集合中的很重要的用法就是消除重复如果我们处理数据想要消除重复的元素,可以先将这个类型转化为集合,会自动消除重复项,然后再把集合转化为以前的类型

创建集合

集合直接用大括号表示或者通过转化来表示

直接创建

>>> a = {1,2,5,8,3,6}
>>> type(a)
<class 'set'>

通过转化

>>> a = [1,2,3,4,5]
>>> b = set(a)
>>> b
{1, 2, 3, 4, 5}
>>> a
[1, 2, 3, 4, 5]

求union(联合)intersection(交)difference(差)以及对称差分

单纯的求两个集合的union、intersection和difference可以用特殊符号直接求得

>>> s
{1, 2, 3, 4, 5}
>>> t
{3, 4, 5, 6, 7}
>>> s|t
{1, 2, 3, 4, 5, 6, 7}
>>> s&t
{3, 4, 5}
>>> s-t
{1, 2}
>>> s^t
{1, 2, 6, 7}

集合类型的内建方法

以下方法不会对两个集合进行改变

s、t 分别为两个不同的集合

s.issubset(t) 测试s是不是t的子集,是显示True,不是显示False,可以用 s <= t 来表示

>>> a = {'a','c'}
>>> b = {'a','b','c','d','e'}
>>> a.issubset(b)
True

s.issuperset(t) 测试s是不是t的超集 可以用 s >= t 来表示

>>> a = {'a','c'}
>>> b = {'a','b','c','d','e'}
>>> b.issuperset(a)
True

s.union(t) 返回合并后的集合,相当于s|t

s.intersection(t) 返回两个集合的交集 相当于s&t

s.difference(t) 差分操作,返回在s中存在,在t中不存在的元素集合 相当于s-t

s.symmetric_difference(t) 对称差分操作,返回存在与s但是不存在于t以及存在于t但是不存在与s的综合的集合,相当于 s^t

s.copy() 返回s的浅拷贝

以下方法会改变集合

s.update(t) 将t中的元素添加到s中 相当于s|=t,将s和t求和赋值给s

>>> s
{1, 2, 3, 4, 5}
>>> t
{3, 4, 5, 6, 7}
>>> s.update(t)
>>> s
{1, 2, 3, 4, 5, 6, 7}
>>> t
{3, 4, 5, 6, 7}

s.intersection_update(t) 交集修改操作,相当于s&=t 将s和t的交集赋值给s

>>> s = {1,2,3,4,5}
>>> t = {4,5,6,7,8}
>>> s.intersection_update(t)
>>> s
{4, 5}
>>> t
{4, 5, 6, 7, 8}

s.difference_update(t) 相当于s-=t 差修改操作, 将s和t的差赋值给s

s.symmetric_difference_update(t) 相当于s^=t 将s和t求对称差分然后赋值给s

s.add(obj) 将obj添加到s集合中

>>> s = {1,2,3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}

s.remove(obj) 将obj从s中删除,如果s中没有obj会引发异常

s.discard(obj) 将obj从s中丢弃,即使s中没有obj 也不会引发异常

>>> s
{1, 2, 3, 4}
>>> s.remove(3)
>>> s
{1, 2, 4}
>>> s.remove(5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 5
>>> s
{1, 2, 4}
>>> s.discard(4)
>>> s
{1, 2}
>>> s.discard(5)
>>> s
{1, 2}

s.pop() 弹出操作,随机删除并返回s中的一个元素

>>> s = {1,2,3,4,5}
>>> s.pop()
1
>>> s
{2, 3, 4, 5}

s.clear() 清除s中的所有元素

>>> s
{2, 3, 4, 5}
>>> s.clear()
>>> s
set()
原文地址:https://www.cnblogs.com/rendawei/p/6986456.html