set集合知识点小结

set集合知识点小结

数学定义:集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体。

编程定义:set 对象是由具有唯一性的 hashable 对象所组成的无序多项集。

特性:

​ 确定性:给定一个集合,任给一个元素,该元素只能属于或者不属于该集合

​ 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。

​ 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。

运算:并(union),交(intersection),差(difference),对称差集(sysmmetric different)

创建集合

#setname = {value,value,……} 
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}

#setname = set(iteration)
basket2 = set(('apple', 'pear', 'banana'))
a = set('abcdefg')
b = set([1,2,3,4,5])
c = set()#如果要创建空集合,只能使用set()函数实现。如果使用{}创建集合,那么python解释器会将它视为一个空字典

#集合生成式
#{exp for value in collection if condtion}
d = {num for num in range (1,20) if num%3 == or num%5 == 0}

基本操作

1,增加
#1,add()方法:setname.add(element).
#注意:添加的元素,只能是不可变元素,包括数字,字符串,元组;不能添加列表,集合,字典这类可变的数据。
set_demo1 = {11, 2.1, True, 4+5j, 'python'(1,2,3)}
set_demo1.add('天下第一')

#2,update()方法:setname.updata(others):更新集合,添加来自other内的所有元素。也可以写成:setname |= others
set_demo1.update({1, 10, 100, 1000})
set_demo1 |= {1,10,100,1000}
2,删除
#remove()方法:setname.remone(element)。删除set集合中的指定元素。
set_demo2 = {(1, 2, 3), (4+5j), 10, 100, 11, 2.1, True, 'python', '天下第一'}
set_demo2.remove(11)

#diacard()方法:setname.discard(element)。如果不确定要删除的元素再不再集合中,可以使用此方法,当集合中元素不存在时,不会报错。
set_demo2.discard('天下第一')
set_demo2.discard('码农')

#pop()方法:setname.pop()。从集合中移除并返回任意一个元素,如果集合为空则会引发报错 。
set_demo2.pop()

#clear():setname.clear。从集合中移除所有元素

3,其他运算
#成员运算
#element in setname :检查x是否为set集合的成员

#element not in setname :检查x是否非set集合的成员

#比较运算
set_demo3 = {1,2,3,4,5,6}
set_demo4 = {3,4,5}
set_demo5 = {9,8}

set_demo4 < set_demo3 #判断set_demo4是否为set_demo3的真子集
set_demo4 <= set_demo3 #检测set_demo4是否为set_demo3的子集

set_demo3 > set_demo4 #检测set_demo3是否为set_dmeo4的真超集
set_demo3 >= set_demo4 #检测set_demo3是否为set_demo4的超集

#交并差运算
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}

set1 & set2
set1.intersection(set2)  #交集运算
set1 &= set2 #更新集合,

set1 | set2
set1.union(set2) #并集运算

set1 - set2 
set1.difference(set2) #差集运算

set1^set2
set1.symmetric_difference(set2) #对称差集运算


4,更新
#update()方法:setname.updata(others):更新集合,添加来自other内的所有元素。也可以写成:
#setname |= others
set3 = {x*2 for x in range(10)}
set4 = {12,14,16,18,19,20}

set3.update({1, 10, 100})
set3 |= {1,10,100}

#结合集合的并差交运算
set3 &= set4 #更新集合,set3中只保留其中在set4中也存在的元素

set3 -= set4 #更新集合,移除在set4中也存在的元素

set3 ^= set4 #更新集合, set3中只保留set3与set4中独有的元素
5,集合的遍历

集合虽然是一个可迭代对象,但因为集合无序性的特性,它无法通过下标进行查询和找出其中的元素。我们可以通过循环语句遍历其中的元素。

set5 = {1,2,3,4,'我爱python',(5,2,1)}
#fro……in……循环
for i in set5:
	print(set5)
#enumerate()方法
for index,k in enunerate(set5):
    print(index,k)

不可变集合frozenset

frozenset冻结集合,即不可变集合。frozenset的元素是固定的,一旦创建后就无法增加、删除和修改。其最大的优点是使用hash算法实现,所以执行速度快,而且frozenset可以作为dict字典的Key,也可以成为其他集合的元素。

frozenset()   #frozenset()
frozenset([1, 2, 3, 'abc'])
#frozenset集合作为dic的key和value
f = frozenset([1,2,3])
d = {f:'a'}   #{frozenset({1, 2, 3}): 'a'}
d2 = {'a':f}  #{'a': frozenset({1, 2, 3})}
#set集合不可以作为dic的key和value
f2 = set([1, 2, 3])
d3 = {f2:1}   #TypeError: unhashable type: 'set'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值