码迷,mamicode.com
首页 > 其他好文 > 详细

集合(set)

时间:2019-01-06 16:40:04      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:并集   添加   abc   转换   常用   区分   操作   value   iss   

set()

set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

set集合是python的一个基本数据类型. 一般不是很常用. set中的元素是不重复的.无序的.里面的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但是不保存value, 只保存key. set也用{}表示

 

注意: set集合中的元素必须是可hash的, 但是set本身是不可hash得.set是可变的.

set1 = {1,alex,2,True,[1,2,3]} # 报错
set2 = {1,alex,2,True,{1:2}} # 报错
set3 = {1,alex,2,True,(1,2,[2,3,4])} # 报错

 

 

set中的元素是不重复的, 且无序的.
s = {"周杰伦", "周杰伦", "周星星"}
print(s)
结果:
{周星星, 周杰伦}

使用这个特性可以使set来去掉重复

# 给list去重复
lst = [45, 5, "哈哈", 45, 哈哈, 50]
lst = list(set(lst)) # 把list转换成set, 然后再转换回list
print(lst)

 

增加

se.add(内容)  # 重复的内容不会被添加到set集合中
print(se)
se.update(可迭代对象)# 迭代更新
se.update(["沾满","李儒",""李儒])# 迭代更新
print(se)

 

删除

se = {6,2,3,4}
se.remove(内容) #直接删除内容
print(se)
se.pop()   #默认删除第一个
print(se)
del se    #删除整个集合
se.clear() #清空set集合,需要注意的set集合如果是空的,打印粗来是set()因为要和dict区分的

 

 

改:

# 集合就是先删后增
s = {"刘嘉玲", 关之琳, "王祖贤","张曼?", "李若彤"}
# 把刘嘉玲改成赵本
s.remove("刘嘉玲")
s.add("赵本")
print(s)

 

查:

#set 是一个科迭代对象,所以可以进行for循环
for el in s:
 print(el)

 

 

 

# 交集   &
print(s1 & s2)
print(s1.intersection(s2))
# 并集   |
print(s1|s2)
print(s1.union(s2))
# 差集   -
print(s1 - s2)
print(s1.difference())
# 反差集 ^
print(s1 ^ s2)
print(s1.symmetric_difference(s2))


# 子集 <
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {1, 2, 3, 4}
s1 < s2 # False
s1 < s3 # True

print(s1<s2) print(s1.issubset(s2)) # 超级 >
类似于子集,前后颠倒位置即可
print(s1 > s2) print(s1.issuperset(s2)) # 冻结集合 : 把可变的集合变成了不可变得集合 不常用

 

set集合本身是可以发生改变的. 是不可hash的. 我们可以使用frozenset来保存数据. frozenset是不可变的. 也就是一个可哈希的数据类型
s = frozenset(["赵本?", "刘能", "", "?跪"])
dic = {s:123} # 可以正常使?了
print(dic)

 

固定集合和集合的区别就是固定集合是不可变的,而集合是可变的,其他的基本都一样
由于固定集合是不可变的,所以没有集合里边的修改操作,一笔带过

fz = frozenset()
fz = frozenset(‘ABCAB‘) # frozenset({‘C‘, ‘B‘, ‘A‘})
fz = frozenset([1, 2, 3, 4, 5])

集合(set)

标签:并集   添加   abc   转换   常用   区分   操作   value   iss   

原文地址:https://www.cnblogs.com/yanranran/p/10229017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!