目录
1.特性与时间复杂度
Set的特性是其中的元素不重复且无序。
Set插入一个元素、删除一个元素、查找一个元素的时间复杂度都为O(1)。
2.用法
set中的元素都必须是可迭代的对象,如字符串,list
1.创造一个set
使用如下语句创建一个set,注意参数必须为可迭代对象
set(可迭代对象)
例子如下
class my_class:
def __init__(self):
self.test='abc'
my_object=my_class()
#set()参数为一个字符串,set会将其去重
#set将字符串中的每个字符视为一个元素
test=set('bbcd')
print(test)
#注意此时set()参数是一个list
#set将list中的每个元素视为一个元素
test2=set([my_object])
print(test2)
输出为
第一个set中元素为字符串中字符且去重了
第二个set中只有我们自定义的my_object对象
{'b', 'c', 'd'}
{<__main__.my_class object at 0x000001FBE52A5848>}
2.向set中添加元素
使用如下语句
setname.add()
例子:
x=set([1,2,3,4])
print("before:",x)
x.add(6)
print("after:",x)
结果为:
before: {1, 2, 3, 4}
after: {1, 2, 3, 4, 6}
3.删除set中的元素
setname.remove(6)
4.求交并补
#x,y为set
#求交集,返回同时在x与y中的元素
x&y
#求并集,返回一个包含x与y中所有元素的set(会去重)
x|y
#求差集,返回包含x去除y中有的元素剩余元素的集合
x-y
#求补集,返回x与y的非共同元素的集合
x^y
3、原理记录
Set实际的原理是基于哈希表,每次插入删除查找元素都是计算该元素的哈希值,再基于哈希值查找表中是否有相同元素,再进行相应操作。