python之集合相关的函数及注意事项

目录

1.集合的定义

2.集合经常使用的函数

3.集合的运算符

4.集合的分类

5.可哈希和不可哈希


1.集合的定义

集合中的所有元素都应该是"独一无二"并且"无序"。

首先我们先创建一个集合,创建集合的方式有以下两种:

n = {"ab","cd","ef"}
n
>>>{'ef', 'cd', 'ab'}#这里体现了集合的无序性
n = set("csdn")
n
>>>{'c', 'n', 's', 'd'}

并且,我们可以用in/not in来判断某个元素是否属于集合。

那么集合的唯一性是指集合输出时会去除重复的元素,那么我们可以使用len()函数判断集合是否去除重复的元素。

n = {1,2,3,4,1,2,5,6}
n
>>>{1, 2, 3, 4, 5, 6}
m = (1,2,3,4,1,2,5,6)
m
>>>(1, 2, 3, 4, 1, 2, 5, 6)
len(n)== len(m)
>>>False

2.集合经常使用的函数

isdisjoint()函数表示判断两个集合是否为不相关,例如:

a = set("csdn")
b = set("ssdn")
a.isdisjoint(b)
>>>False
c = set("aabb")
a.isdisjoint(c)
>>>True

issubset()函数表示判断该集合是否为另一个集合的子集,例如:

a = set("ab")
b = set("aabb")
a.issubset(b)
>>>True

issuperset()函数表示判断该集合是否为另一个集合的超集,例如:

a = set("aabb")
b = set("ab")
a.issuperset(b)
>>>True

union()函数表示构建两个集合的并集,例如:

a = set("abcd")
b = set("ef")
a.union(b)
>>>{'a', 'c', 'e', 'f', 'd', 'b'}

intersection()函数表示构建两个集合的交集,例如:

a = set("abc")
b = set("abcd")
a.intersection(b)
>>>{'b', 'a', 'c'}

difference()函数表示构建两个集合的差集,差集是一种集合运算,记A,B是两个集合,则所有属于A且不属于B的元素构成的集合,叫做集合A减集合B(或集合A与集合B之差),类似地,对于集合A、B,把集合{x∣x∈A,且x∉B}叫做A与B的差集。

例如:

a = set("abcd")
b = set("abcdef")
a.difference(b)
>>>set()
b.difference(a)
>>>{'e', 'f'}

symmetric_difference()函数表示构建两个集合的对称差集。对于两个集合A,B,先排除集合A与集合B的所有共同元素,由剩下的元素组成的集合,叫做集合A和集合B的对称差集。

例如:

a = set("abcd")
b = set("abcdef")
a.symmetric_difference(b)
>>>{'e', 'f'}
b.symmetric_difference(a)
>>>{'e', 'f'}

3.集合的运算符

 (<)表示子集的判断,(>)表示超集的判断,(<=)表示真子集的判断,(>=)表示真超集的判断,(|)表示并集的判断,(&)表示交集的判断,(-)表示差集的判断,(^)表示对称差集的判断。

下面依次举例:

a = set("abc")
b = set("abcd")
a<b
>>>True #a是b的子集
b<a
>>>False #b不是a的子集
a>b
>>>False #a不是b的超集
b>a
>>>True #b是a的超集
a<=b
>>True #a是b的真子集
a>=b
>>>False #a是b的真超集
a|b
>>>{'a', 'c', 'd', 'b'} #a和b的并集
a&b
>>>{'b', 'a', 'c'} #a和b的交集
a-b
>>>set() #a对b的差集为空集
b-a
>>>{'d'} #b对a的差集为{“b”}
a^b
>>>{'d'} #a和b的对称差集为{“b”}
b^a
>>>{'d'} #a和b的对称差集为{“b”}

4.集合的分类

python将集合细分为可变集合(set())不可变集合(forzenset())。

update(*others)函数表示对集合进行更新,其中others表示支持多个参数,如果是other则表示支持单个参数。例如:

a = set("abcd")
a.update("ae")
a
>>>{'a', 'd', 'b', 'c', 'e'} #集合里面的内容被改变

b = frozenset("abcd")
b.update("ae")
>>>Traceback (most recent call last): #集合无法被改变
  File "<pyshell#1>", line 1, in <module>
    b.update("ae")
AttributeError: 'frozenset' object has no attribute 'update'

此外update()可以于之前的intersection,difference,symmetric_difference搭配,得到以下的函数,表示对集合进行运算之后,集合会进行更新,如果是没有与update()结合,则只是表示返回计算的结果。

例如:
 

a = set("abcd")
a.intersection_update("abef")
a
>>>{'b', 'a'}
a = set("acbd")
a.difference_update("bdef")
a
>>>{'c', 'a'}
a = set("acbd")
a.symmetric_difference_update("abcdef")
a
>>>{'e', 'f'}

add()函数表示在集合里面添加某个数据。例如:

a = set("abcd")
a.add("e")
a
>>>{'a', 'e', 'd', 'c', 'b'}

remove(elem)discard(elem)函数表示删除集合里面某个元素,如果集合里面没有指定元素,则前者会报错,后者会默认。例如:

a
>>>{'a', 'e', 'd', 'c', 'b'}
a.remove("a")
a
>>>{'e', 'd', 'c', 'b'}
a.remove("z")
>>>Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    a.remove("z")
KeyError: 'z'
a.discard("z")
a
>>>{'e', 'd', 'c', 'b'}

pop()函数表示随机删除集合中的一个元素。例如:

a
>>>{'e', 'd', 'c', 'b'}
a.pop()
'e'
a
>>>{'d', 'c', 'b'}

clear()函数表示将集合进行清空。例如:

a
>>>{'d', 'c', 'b'}
a.clear()
a
>>>set()

5.可哈希和不可哈希

可哈希意思就是,通过hash函数,能产生唯一的value与key对应,如果key改变,value也应该改变,但是可变的数据结构,比如列表,它改变后,列表地址是不变的,可以理解为:不同的key指向了相同的value,这就发生了冲突,所以说列表是不可哈希的。

哈希的原则是通过一一对应的key和value,实现对key的快速访问,自然是不希望出现冲突的情况,在哈希表中,这种情况叫做碰撞,碰撞是难免的,我们只能想办法减少碰撞的发生。

具体可以看看以下文章。

可哈希与不可哈希? - 知乎

以上是我此次分享,谢谢大家。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值