序列四儿子——集合

一.标识

# 标识,用{}或set()标识,元素间用逗号隔开
a={1,2,3}
print(a)#输出{1, 2, 3}

b=set((1,2,3))
print(b)#输出{1, 2, 3}

#如果要申请一个空的集合就必须用set()
print(set())#输出set()

#与列表元组一样,集合的元素类型也可以不同
a={"编程八点档",666,(1,2)}
print(a)#输出{(1, 2), 666, '编程八点档'}


#注意,集合的元素不能是列表类型
#集合两大特点:无序,不重复。字符串、列表、元组都是有序序列
#集合是无序的,不能通过索引访问
a={1,2,3}
print(a[0])#显示报错TypeError: 'set' object does not support indexing


#集合内的元素不能是重复的,如果重复则会自动去掉重复的元素
a={1,2,1,3}
print(a)#输出{1, 2, 3}已经去掉了重复的元素

二.集合的运算

#集合支持:交、并、补运算
#或|,用|求并集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a|b)#输出 {(1, 2), 1, 2, 3, '编程八点档', 666},即a和b的所有元素

#与&,求交集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a&b)#输出{666},即a与b共有的元素

#补集,用-求补集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a-b)#输出{1, 2, 3},即得到a中包含但b中不包含的元素

#用^求并集-交集
a={1,2,3,666}
b={"编程八点档",666,(1,2)}
print(a^b)#输出{(1, 2), 1, 2, 3, '编程八点档'},即得到的是去掉a和b的公共部分的其他剩余部分的元素

三、集合的内置方法

1.求集合长度

#1.求集合长度,即求集合元素的个数,用len()
a={"编程八点档",666}
print(len(a))#输出2,表示集合中有两个元素

2.添加元素

#2.添加操作,用a.add()或a.update()
#不同的是.add()中的只能是数字,字符串和元组类型,
# 而.update()中可以是字符串、列表、元组、集合类型,但不能是数字
#add()
a={"编程八点档",666}
a.add((1,2))#向集合中添加元组(1,2)
print(a)#输出{(1, 2), 666, '编程八点档'}
#update()
a={"编程八点档",666}
a.update((1,2))#将()中的每一个元素都作为新元素,添加到集合a中
print(a)#输出{1, '编程八点档', 2, 666}

3.删除

#3.删除
#用remove()删除集合中的元素
a={"编程八点档",666,(1,2)}
a.remove((1,2))
print(a)#输出{'编程八点档', 666}

#也可以用.discard(),与.remove()用法类似
a={"编程八点档",666,(1,2)}
a.discard((1,2))
print(a)#输出{'编程八点档', 666}

#随机删除元素,用.pop()随机删除一个元素
a={"编程八点档",666,(1,2)}
a.pop()
print(a)#输出{'编程八点档', 666}

#清空集合,用.clear()清空集合
a={"编程八点档",666,(1,2)}
a.clear()
print(a)#输出 set(),清空后集合依然存在

4.判断元素是否在集合中

#4.判断元素是否在集合中,用in
#如果在,返回TRUE,否则返回false
a={"编程八点档",666}
"is" in a#判断is是否在a中,is不在a中返回False

5.求两个元素的交集

#5.求两个集合的交集
#有两种方法:a.intersection(b)和a.intersection_update(b)
#和与&的作用一样,得到a和b共有的元素。
# 不同的是.intersection()会返回一个新的集合,并不会对原有的集合造成改变
a={"编程八点档",666}
b={(1,2),666}
c=a.intersection(b)
print(c)#输出{666},
print(a)#输出{'编程八点档', 666},原有的集合a没有发生改变

#而.intersection_update()会将结果赋给原有的集合a
a={"编程八点档",666}
b={(1,2),666}
a.intersection_update(b)
print(a)#输出{666},将结果赋给原有的集合a,原有的集合a发生了改变

6.求两个集合的差集

#6.求两个集合的差集
#有两种方法:.difference()和.difference_update()
#a.difference(b)和a.difference_update(b)
# 和-的作用一样,求a中包含而b中不包含的元素
#不同的是.difference()会返回一个新的集合,并不会对原有的集合a造成改变
a={"编程八点档",666}
b={(1,2),666}
c=a.difference(b)
print(c)#输出{'编程八点档'} 
print(a)#输出{'编程八点档', 666} 集合a并没有发生改变

#a.difference_update(b)将结果赋给原有的集合a
a={"编程八点档",666}
b={(1,2),666}
c=a.difference_update(b)
print(c)#输出None
print(a)#输出{'编程八点档'},将结果赋给原有的集合a

7.求两个集合的并集

#7.求两个集合的并集
#用.union() 
a={"编程八点档",666}
b={(1,2),666}
c=a.union(b)
print(c)#输出{(1, 2), 666, '编程八点档'},得到a和b中包含的所有元素

8.求并集-交集

#8.并集-交集
#有两种方法,跟^的功能一样:.symmetric_difference()和symmetric_difference_update()
#即得到的是去掉a和b的公共部分的其他剩余部分的元素

#不同的是symmetric_difference()会得到一个新集合,原有集合a的值不变
a={"编程八点档",666}
b={(1,2),666}
c=a.symmetric_difference(b)
print(c)#输出{(1, 2), '编程八点档'}
print(a)#输出{666, '编程八点档'},原有集合a的值不变

#而symmetric_difference_update()则会将值赋给原有的集合a
a={"编程八点档",666}
b={(1,2),666}
c=a.symmetric_difference_update(b)
print(c)#输出None
print(a)#输出{(1, 2), '编程八点档'},将值赋给原有的集合a

9.判断两个集合是否包含相同元素

#9.判断两个集合是否包含相同元素
#用.isdisjoint()
#如果没有相同元素就返回True,否则返回False
a={"编程八点档",666}
b={(1,2),666}
a.isdisjoint(b)#a和b有相同元素,返回False

10.判断是否为子集


#10.判断是否为子集
#用.issubset()
#a.issubset(b)判断集合a是否为集合b的子集
#如果是,返回True,否则返回False
a={666,(1,2)}
b={666,(1,2),3}
a.issubset(b)#集合a为集合b的子集,返回True

#如果反过来判断集合b是否为集合a的子集
#用a.issuperset(b)
#如果是,返回True,否则返回False
a={666,(1,2)}
b={666,(1,2),3}
a.issuperset(b)#集合b不是集合a的子集,返回False

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值