集合(set)

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])

猜你喜欢

转载自www.cnblogs.com/yanranran/p/10229017.html
今日推荐