集合的总结(set函数语法操作符内建函数内建方法)
Posted WXiujie123456
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合的总结(set函数语法操作符内建函数内建方法)相关的知识,希望对你有一定的参考价值。
目录
集合的介绍
set 对象是由具有唯一性的可哈希对象所组成的无序多项集。常见的用途包括成员检测、从序列中去除重复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。frozenset(不可变集合)无法进行更新、添加、删除。
可变集合(set)可以删除、添加元素,不可变集合(frozenset)不可。故可变集合是不可哈希的,既不能做字典的键也不能做其他集合的元素。不可变集合则可以。
set()函数语法
set 语法:set([iterable]) iterable -- 可迭代对象对象
返回新的集合对象, 如果有参数,返回可迭代对象形成的已去重集合。
因为集合本身无序,不支持索引、切片等,也不支持使用键来获取集合中元素的值。
x=set('eleven')
y=frozenset('twelve')
print(x)
print(y)
print(type(x))
print(type(y))
遍历访问集合中的值,不可以通过下标和切片索引的方式,可以用for循环
for i in x:
print(i)
更新集合请使用集合的各种内建方法,见后面
删除集合用del :del 集合名
集合类型操作符
标准类型操作符(所有)
成员关系 in 和not in
判断某个元素是否是一个集合的成员
x=set('eleven')
y=frozenset('twelve')
if 'e' in x:
print(True)
if 'f' not in y:
print(True)
集合等价/不等价 == !=
与集合的类型(可变不可变)或集合的成员顺序无关,只和集合的元素有关
子集/超集 < <= > >=
判断一个x是否是y的子集或者超集。
集合类型操作符(所有)
以下操作的操作本身返回一个目标新集合。
交集 & : x&y,返回一个新的集合,包括同时在集合 x 和y中的共同元素,等价于intersection方法。
并集(联合) | : x|y,返回一个新的集合,包括集合 x 和 y 中所有元素,等价于union方法。
差集 - : x-y,返回一个新的集合,包括在集合 x 中但不在集合 y 中的元素,等价于difference方法。
补集(对称差分,异或) ^ : x^y,返回一个新的集合,包括集合 x 和 y 的非共同元素,等价于symmertric_difference方法。
混合集合类型操作
若两个操作数的类型相同(都为可变集合或都为不可变集合),则产生的结果类型是相同的。如果左右两个操作数的类型不相同(左边是set,右边是fronzenset),所产生的结果与左侧操作数的类型相同。
x=set('eleven')
y=frozenset('twelve')
print(type(x&y))
print(type(y&x))
集合类型操作符(仅适用于可变集合)
以下操作,会改变左边操作数本身。
x|=y 等价于update方法 从已存在的集合中添加(可能多个)成员
s=set('cheeseshop')
u=frozenset(s)
s|=set('pypi')
print(s)
x&=y 等价于intersection_update方法,保留与其他集合的共有成员
s=set('cheeseshop')
s&=set('shop')
print(s)
x-=y 等价于difference_update(),左操作数x的元素会变成x除掉y中元素后剩余的元素
s=set('cheeseshop')
s-=set('shop')
print(s)
x^=y,等价于symmetric_difference_update(),x的元素变成仅是x的元素或仅是y的元素。
s=set('cheeseshop')
s^=set('shopacb')
print(s)
内建函数
标准类型内建函数 len()
返回集合的基数(或元素的个数)
集合类型工厂函数 set()和 frozenset()
set()和 frozenset()工厂函数分别用来生成可变和不可变的集合。如果不提供任何参数,默认会生成空集合。如果提供一个参数,则该参数必须是可迭代的,即一个序列,或迭代器,或支持迭代的一个对象例如一个文件或一个字典。
集合类型内建方法
方法(所有集合的方法)
- issubset 报告另一个集合是否包含该集合
- issuperset 报告此集合是否包含另一个集合
- union 将集合的并集作为新集合返回
- intersection 返回两个集合的交集作为新集合
- difference 移除两个集合中都存在的元素,返回一个移除相同元素的新集合(差集),不会改变左操作数的集合
- symmetric_difference 将两个集合的对称差作为新集合返回,即返回补集
- copy 返回集合的浅拷贝
- disdisjoint 如果两个集合的交点为空,则返回True,交集不空,返回False
方法(仅适用于可变集合)
- update 对该集合结合另一个结合进行并集更新,没有返回值(None),左值本身直接被修改
- intersection_update 在原始的集合上移除不重叠的元素,返回值None
- ifference_update 差异更新,从该集合中删除另一个集合的所有元素,直接在原来的集合中移除元素,没有返回值(None)。
- symmetric_difference_update 对该集合结合另一个结合进行补集更新,没有返回值(None),左值本身直接被修改
- add 添加新元素,如果该元素已经存在,则没有任何效果。
- remove 输出None 去掉b中的一个元素,如果没有这个元素会报错
- discard 输出None 去掉b中的一个元素,如果没有这个元素不会报错
- pop 删除并返回任意set元素。如果集合为空,则引发KeyError。
集合内建函数应用举例
a=['1','2','3','2','2','3']
b=set(a)
print(f'b是{b}')
print(type(b))
print(type({1:2}))
a.append('100')
print(a)
b.add('999') #set集合添加新元素用add,如果该元素已经存在,则没有任何效果。
print(f'b是{b}')
b.remove('999')#输出None 去掉b中的一个元素,如果没有这个元素会报错
print(f'b是{b}')
# print(b.remove('999'))#报错
b.add('999') #set集合添加新元素用add,如果该元素已经存在,则没有任何效果。
print(f'b是{b}')
b.discard('999')#输出None 去掉b中的一个元素,如果没有这个元素不会报错
print(f'b是{b}')
b.discard('999')#输出None 去掉b中的一个元素,如果没有这个元素不会报错
print(f'b是{b}')
c=b.copy() #返回集合的浅拷贝
print(c)
d=['3','7','7','1','8']
e=set(d) #e是{'1', '3', '7', '8'}
print(f'e是{e}')
print(b.difference(e))#移除两个集合中都存在的元素,返回一个移除相同元素的新集合,不会改变b的集合
print(f'b是{b}')
print(b.difference_update(e))#差异更新,从该集合中删除另一个集合的所有元素,直接在原来的集合中移除元素,没有返回值(None)。
print(f'b是{b}')
b=set(a)
print(f'b是{b}') #b是{'1', '3', '2', '100'}
print(b.intersection(e))#返回两个集合的交集作为新集合{'1', '3'}。
print(b.intersection_update(e)) #在原始的集合上移除不重叠的元素,返回值None
print(f'b是{b}') #b变成了{‘1’,‘3’}
print(b.isdisjoint(e)) #如果两个集合的交点为空,则返回True,交集不空,返回False
print(f'b是{b}')
print(f'e是{e}')
print(b.issubset(e)) #报告另一个集合是否包含该集合。
print(b.issuperset(e)) #报告此集合是否包含另一个集合。
b=set(a)
print(f'b是{b}')
print(b.pop()) #删除并返回任意set元素。如果集合为空,则引发KeyError。
print(f'b是{b}')#pop操作会改变b集合
b=set(a)
print(f'b是{b}')
print(f'e是{e}')
print(b.symmetric_difference(e)) #将两个集合的对称差作为新集合返回,即返回补集
print(b.symmetric_difference_update(e)) #对该集合结合另一个结合进行补集更新,没有返回值(None),b本身直接被修改
print(b)
b=set(a)
print(f'b是{b}')
print(f'e是{e}')
print(b.union(e)) #将集合的并集作为新集合返回
print(b.update(e))#对该集合结合另一个结合进行并集更新,没有返回值(None),b本身直接被修改
print(b)
更多Python框架梳理,请参考: 【Python学习】Python最全总结
有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。
以上是关于集合的总结(set函数语法操作符内建函数内建方法)的主要内容,如果未能解决你的问题,请参考以下文章