python--集合

一些集合的基本操作

set()的集合表示方法

创建集合

1
2
3
#可以用{}或者set函数创建集合
type({"Deng"}) #class="set"
s = set("Deng") #class="set"

集合的无序性

1
2
3
4
5
6
#创建一个集合并且按字符输出可以发现集合是无序的!
s = set("Deng")
D in s #True
d not in s #True
for each in s:
    print(each) # n e D g 我们可以发现输出的结果是无序的,证明了集合的无序性!

集合会自动去重

1
print(set([1,2,3,3,4,4])) #[1,2,3,4]就把多出来的3和4去掉了!

判断两个集合之间是否有关系

1
2
3
4
5
6
#先创建第一个集合
D = set("Deng")
#使用isdisjoint方法判断两个集合之间是否有关系,具体如下
s.isdisjoint(set("python")) #False代表两个集合之间是有相关的!判断的依据是两个集合之间有相关的元素重合,那么可见有n重合,所以两个集合之间是有相关的及false
#再判断JAVA
s.isdisjoint(set("JAVA")) #True代表两个集合无关

检测两个集合是否有子集关系

1
2
3
4
#使用issubset方法,判断前面是否为后面的子集!
s = set("Deng")
#判断s是否为后面的子集
s.issubset(set("DengGaozheng")) #True说明s正是DengGaozheng的子集!

检测两个集合是否有超集关系

1
2
3
4
#用issuperset对于A和B来说,A中所有元素都在B中有出现,那么说明B是A的超集!
A = set("Deng")
B = set("DengGaozheng")
B.issuperset(A) #True说明B是A的超集!

两个集合之间使用交集

1
2
3
#intersection方法
s = set("Deng")
s.intersection("De") #"De"

两个集合之间使用并集

1
2
3
#union方法
s = set("Deng")
s.union(set("Gaozheng")) #"DengGaozheng"

两个集合之间使用差集

1
2
3
#difference方法,差集即存在于一个集合而不存在于另一个集合的元素
s = set("DengGao")
s.difference("Deng") #"Gao"存在于s中而不存在于"Deng"中

管道符

| 管道符的作用是 把 管道符左边的的输出 当做右边命令后面待处理的结果。相当于并集的作用

1
2
s = "Deng"
s | "Gao" | set("zheng") #这串代码相当于s并"Gao"并set("zheng"),结果是"DengGaozheng"

专属于set的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#update()用来在set创建的集合里面更新元素
s = set("Deng")
s.update("Gao")
print(s) #["Deng","G","a","o"]

#add()用于添加元素
s = set("Deng")
s.add("Gao")
print(s) #"DengGao"

#update和add都可以添加元素,但是区别在于update添加字符串时添加的是单个字符,add添加字符串时添加的是字符串。

#用remove方法删除集合中的元素,如果删除了不存在的元素,那么会抛出异常
s = ['D','e','n','g']
s.remove("D") #['e','n','g']

#pop方法用于随机从集合中弹出一个元素(有点出栈的感觉)
s = ['D','e','n','g']
s.pop() #'e'
s.pop() #'g'

frozenset()的集合表示方法

创建frozenset集合

1
2
3
#创建frozenset集合
s = frozenset("Deng")
type(s) #class = frozenset

可哈希

1
2
3
4
5
6
7
8
9
10
11
12
#整数哈希值:对于整数来说,哈希值永远等于自身的值
hash(1) #1
hash(1.0) #1.0

#列表是不可哈希的
hash([1,2,3]) #error!

#哈希配合frozenset可以实现嵌套的集合,这在set里面是实现不了的!
x = {1,2,3}
x = frozenset(x)
y = {x,4,5}
print(y)  #{forzenset({1,2,3}),4,5}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值