python学习笔记(二)之元组,集合,列表,字典的概念和区别(四)

一:基本概念

1.1 定义

set存储元素不重复、无序数据类型。

1.2 初始化集合

1.2.1 初始化空集合或带值集合: 集合名=set( [ ] )
1.2.2 初始化空集合: 集合名=set()
1.2.2 初始化包含值的集合: 集合名={数据1,数据2}

emptySet=set()
emptySet=set([])
date=set(['a','b','c','d'])
date={'a','b','c','d'}

在这里插入图片描述

二:集合的特性

2.1 去重

使用集合快速删除列表中的重复值

listname=[1,2,3,1,4,3,2,5]
print(list(set(listname)))	##列表转化为集合类型,去重后再转换为列表类型

2.2 成员操作符

集合只支持成员操作符、for循环迭代、枚举
不支持索引,重复,连接,切片
##无序的数据类型,添加顺序和在集合中的存储顺序不一样

setname={1,2,3}
print(i in setname)
print(4 not in setname)		##返回Ture 或 False

2.3 for循环

setname={1,2,3}
for i in setname:
	print(i,end='\t')

2.4 枚举

返回对应元素及其索引值

三:常用方法

3.1 增

添加顺序与存储顺序不同
3.1.1 添加一个不可变元素:——集合名.add(x)

若集合中不存在x,则将x添加到集合中;若x已存在,不会报错。
x只能为不可变的值(字符串或元组),若x为list,则返回TypeError

3.1.2 添加多个元素:——集合名.update([x1,x2,x3])

s={1,2,3}
s.add(1)	#已存在,但不报错
s.add('a')	
s.update([3,4,5])	#添加多个元素

3.2 删

3.2.1 remove方法: ——集合名.remove(value)
从集合中删除一个指定元素,若value不存在,则返回keyerror 异常
3.2.2 pop方法:——集合名.pop()
随机删除集合中的一个元素并返回该值,若集合为空,则产生keyerror异常
3.2.3 discard方法:——集合名.discard(value)
从集合中删除一个元素,若value不存在,不会报错
3.2.4 clear方法:——集合名.clear()
删除集合中的所有值

s={1,2,3,4}
s.remove(1)
s.remove('a')	#keyerror异常
print(s.pop())	#随机删除一个并返回
print(s)
s1=set()		#创建空集合
print(s1.pop())	#返回异常,KeyError: 'pop from an empty set'
s.discard('a')	#不会返回异常
s.clear()		#清空集合

3.3 排序

3.3.1 升序:sorted(集合名)
3.3.2 降序:sorted(集合名,reverse=Ture)

s={1,3,2}
sorted(s)	#输出{1,2,3}
date={'a','e','t'}
sorted(date,reverse=True)	#按字母降序排列,输出{'t','e','a'}

3.4 关系测试

3.4.1 并集

union() 函数——将集合a和集合b取并集,并将并集作为一个新的集合返回,但不改变原集合a,b。语法如下:
集合1.union(集合2,集合3)
集合1 | 集合2 | 集合3

update()函数——将集合a和集合b取并集,并将结果保存在集合a中(即更新集合a),集合b不改变,但是没有返回值 将x中的所有项添加到集合a中。x可以是 集合,列表,元组,字典等或者支持迭代的所有对象。
集合1.update(集合2,集合3)
集合1.update(x)

a={1,2,3}
b={'hu','ki'}
c={1,2,'li'}
print(a.union(b))	#返回a和b的并集
print(a.union(b,c))	#返回a,b,c的并集
print(a.update(b))	#返回值为空
print(a)			#a被更新
print(b)			#b不变
a.update(b,c)		#a被更新,b,c不变
x=[1,2,'s']			#列表
y={'li':4,'hi':55}	#字典,####字典类型作用的是key值
z=('44','d')		#元组
a.update(c,x,y,z)	#分别将集合,列表,字典,元组添加到集合a中

3.4.2 交集

intersection()函数——属于集合A且属于集合B的元素,即A∩B。取交集并作为一个新集合返回,但不改变原集合的元素。
集合1.intersection(集合2,集合3)

intersection_update()函数——把集合a更新为集合a与集合b(或多个集合)的交集,但集合b(其它集合)的元素不改变,且返回值为空。或 计算集合s与x的交集,并将结果保存在集合s中。x可以是 集合,列表,元组,字典等或者支持迭代的所有对象。
集合1.intersection_update(集合2,集合3)
集合1.intersection_update(列表,元组,字典,集合)

a={1,2,'s',55}
b={4,2,'s',67}
x=a.intersection(b)	#返回集合a,b的交集
print(x)
print(a,b)			#集合a,b不改变
a.intersection_update(b)
print(a.intersection_update(b))	#返回值为空
print(a)			#集合a更新为交集
print(b)			#集合b不变

3.4.3 差集

difference() 函数——所有属于集合a但不属于集合b的元素,{x|x∈a,且x∉b}等效与a-b。将两集合取差集并返回差集,但各集合并不改变
集合1.difference(集合2,集合3,集合4)

difference_update()函数——把集合a更新为集合a与集合b的差集。集合a元素被更新改变,但集合b元素不改变,无返回值 从集合s中删除同时也在x中出现的所有元素。x可以是 集合,列表,元组,字典等或者支持迭代的所有对象。
集合1.difference_update(集合2,集合3,集合4)
集合1.difference_update(元组,列表,字典,集合)

a={1,2,'hu','ge'}
b={2,6,7,'hu','hy'}
x1=a.difference(b)	#返回集合a-集合b
x2=b.difference(a)	#返回集合b-集合a
print(x1)			
print(x2)
print(a,b)			#集合a,b不变
a.difference_update(b)
print(a.difference_update(b))	#返回值为空
print(a)	#集合a更新为a,b的差集
print(b)	#集合b不改变

3.4.4 对称集

symmetric_difference()函数——返回对称差集(反向交集),即返回两个集合中不重复的元素集合,即移除两个集合中都存在的元素,但不改变原集合元素。A ^ B=(A-B)∪(B-A)
集合1.symmetric_difference(集合2)

symmetric_difference_update()函数——把集合a更新为集合a与集合b的对称差集。集合a元素被更新改变,但集合b元素不改变,且返回值为空。 或 计算集合s与x的对称差集,并将结果保存在集合s中。x可以是 集合,列表,元组,字典等或者支持迭代的所有对象。
集合1.symmetric_difference_update(集合2,集合3)
集合1.symmetric_difference_update(x) (括号中只能是一个对象)

x=a.symmetric_difference(b)	#返回a,b的对称差集
print(x1)
print(a,b)	#集合a,b不改变
a.symmetric_difference_update(b)
print(a.symmetric_difference_update(b))	#返回值为空
print(a)	#集合a更新
print(b)	#集合b不变
l=[1,2,'yu']
t=('88','ki')
d={2:'hu',6:'ji'}
a.symmetric_difference_update(l)
a.symmetric_difference_update(y)

3.4.5 子父集

issubset()函数——判断两个集合是否是子集关系(A⊆B)。即判断集合1中的所有元素是否都包含在集合2中,若都包含在集合2中则返回True,否则返回False。
集合1.issubset(集合2)

issuperset()函数——判断两个集合是否是超集(父集)。即判断集合2中的所有元素是否都包含在集合1中,若都包含在集合1中则返回True,否则返回False。
集合1.issuperset(集合2)

a = {1,2,3,"a"}
b = {1,2,3,"a","b","c"}
c = {1,2,3,"b","h"}
print(a.issubset(b)) #集合a是集合b的子集
print(a.issubset(c)) #集合a不是集合b的子集
print(a.issuperset(b)) #集合a是集合b的超集. 
print(a.issuperset(c)) #集合a不是集合b的超集。

3.4.6 判断相交

isdisjoint()函数——判断两个集合是否包含相同的元素,若没有相同元素则返回 True,否则返回 False。
集合1.isdisjoint(集合2)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值