集合
集合是一个可变的数据类型,他是以{}形式存在的,空集合set() #{}表示空字典但是它要求它里面的元素是不可变的。
集合是无序的,不重复的
![]()
1 # set1 = {1, 2, 3, 'abc', (1,2,3), True,[1,2,3] }
2 # print(set1) #[1,2,3]列表是可变的,所以这个集合是错误的
View Code
1.去重
思考:怎样给如下列表去重?
l1 = [11, 11, 22, 22, 33, 33, 33, 44]
# l1 = [11, 11, 22, 22, 33, 33, 33, 44]
# l2=list(set(l1))
# # 因为集合是无序的,所以我为了好看,可以排序
# l2.sort()
# print(l2)
# 2.集合的增,删,查 没有改(因为是无序的,没有索引,无法改)
1)增:①add(无序)
# set1={1,3,'小灰狗'}
# set1.add('皮皮虾')
# print(set1) # {1, '小灰狗', 3, '皮皮虾'}
② update 迭代着添加(无序) #注:update在两个字典间的用法:覆盖着添加
# set1={1,3,'小灰狗'}
# set1.update('abc')
# print(set1) #{1, 3, 'b', 'a', '小灰狗', 'c'}
# set1.update([1,2,3,4])
# print(set1) # {1, 2, '小灰狗', 3, 4}
# 2)删
①remove 按元素删除
# set1 = {1, 3, '小灰狗'}
# set1.remove(1)
# print(set1) # {'小灰狗', 3}
②pop 随机删除,有返回值
# set1 = {1, 3, '小灰狗'}
# print(set1.pop(),set1) # {'小灰狗', 3}
③clear 清空
# set1 = {1, 3, '小灰狗'}
# set1.clear()
# print(set1) # set()
④del 删除整体
3)查:for循环
# for i in set1:
# print(i)
# 2.关系测试 & | - ^
# ①交集 & set1 & set2 两者共有的
# ②反交集 ^ set1 ^ set2
# ③并集 | set1 | set2
# ④差集 - set1 - set2 前者独有的
# set1={1, 2, 3, 4, }
# set2={3, 4, 5, 6,}
# print(set1&set2,set1|set2,set1-set2,set1^set2) # {3, 4} {1, 2, 3, 4, 5, 6} {1, 2} {1, 2, 5, 6}
# ⑤子集
# ⑥超集
# set1 = {1, 2, 3}
# set2 = {1, 2, 3, 4, 5, 6}
#
# print(set1 < set2) # True set1 是set2的子集
# print(set2 > set1) # True set2 是set1的超集
# ⑦冻结 frozenset 冻结后就不能再做任何改变
# 创建一个冻结的集合:
# set1=frozenset({1,2,3,'gss'})
# set1.add('8')
# print(set1) # AttributeError: 'frozenset' object has no attribute 'add'