1、set(集合)属性,无序,不重复序列(也可用于去重)
li = [11,222]
print(li)
列表的创建
li = [] 空列表
list((11,22,33,4)) 元组转换为列表
列表原理: list __init__,内部执行for循环(11,22,33,4) [11,22,33,4]
字典:
dic = {"k1":123}
集合:
se = {"123", "456"}
s = set() 创建空集合
li = [11,22,11,22]
s1 = set(li) 转换为集合
print(s1)
2、集合的功能
set()
创建集合
s1 = {11,22}
s2 = set()
s3 = set([11,22,33,4])
操作集合
s = set() 定义一个空集合
print(s)
s.add(123) 给集合添加一个元素,每次只能添加一个元素
s.add(123) 不重复,再次添加同一个元素无效
print(s)
s.clear() 清空集合
print(s)
s1 = {11,22,33}
s2 = {22,33,44}
s3 = s1.difference(s2) s1中存在,s2中不存在
s3 = s2.difference(s1) s2中存在,s1中不存在
s3 = s1.symmetric_difference(s2) s1中存在,s2中不存在和s2中存在,s1中不存在的元素,返回一个集合
print(s1,s2,s3)
s1.difference_update(s2) 将s1中存在的,s2中不存在的更新到s1,此时s1为{11},若以后用不到s1可使用此方法
s1.symmetric_difference_update(s2) s1中存在,s2中不存在和s2中存在,s1中不存在的元素,返回一个集合,此时s1为{11,44} 若以后用不到s1可使用此方法
s1 = {11,22,33}
s1.discard(1111) 删除集合任一元素,存在则删除,不存在,不报错
s1.remove(11111) 删除集合任一元素,存在则删除,不存在,报错
ret = s1.pop() 删除集合任一元素(随机删除),不建议使用
print(s1)
print(ret)
s1 = {11,22,33}
s2 = {22,33,44}
s3 = s1.union(s2) s1和s2的并集
print(s3)
s3 = s1.intersection(s2) s1和s2的交集
s1.intersection_update(s2) s1和s2的交集,更新到s1,此时s1为{22,33},这是一个动作不可直接打印
print(s1)
s1 = {11,22,33}
s1.add(11)集合不变
s1.add(12)不变
s1.add(13)不变
li = [11,22,3,11,2]
li = (11,22,3,11,2)
li = "alexalex"
s1.update(li)
print(s1)
上面分别列表,元组,字符串的执行结果
{33, 2, 11, 3, 22}
{33, 2, 11, 3, 22}
{33, 'x', 11, 'e', 'l', 'a', 22}
# li = [11,22,33] # list __init__
# li() # list __call__
# li[0] # list __getitem__
# li[0] = 123 # list __setitem__
# def li[1] # list __delitem__
old_dict = {
"#1": 8,
"#2": 4,
"#4": 2,
}
new_dict = {
"#1": 4,
"#2": 4,
"#3": 2,
}
# old_kyes = old_dict.keys()
# old_set = set(old_kyes)
new_set = set(new_dict.keys())
old_set = set(old_dict.keys())
remove_set = old_set.difference(new_set)
add_set = new_set.difference(old_set)
update_set = old_set.intersection(new_set)