一、集合的基本知识:
1、概念:
理解:没有value的字典,即由字典的key组成的字典。
2、特性:
(1)集合的元素没有重复,重复的元素删除。
(2)集合的元素是无序的(类似dict)。
(3)集合的元素相当于字典的key,因此元素是不可变的,但集合是可变数据类型(可以是 bool值)。
二、集合的创建:
1、利用系统函数set(iterable):
对象是可迭代的。
set('abcdefg') >>> 无序
set([1,2,3,4]) 》》》 无序
set({'name':'liu','age':22}) 》》 字典的key组成 ,无序
set1 = set('abcdefaaa') # 强制转化,set()对象是可迭代的
print(set1) ------- 结果: {'e', 'f', 'c', 'b', 'd', 'a'}
for i in set1: # 遍历集合
print(i)
list1 = list(set1) # list() 转化,set()也可以转化列表》》》可以用于 制作 随机数。
print(list1)
set2 = set({1:'23','a':'fff'}) # 字典key组成
print(set2)
2、直接创建:
set_test = {1,2,"1","2","a","b"} ------------ 没有value 的字典的 key 组成
三、集合的内部函数:
1、集合元素增加:
set.add() 添加元素
set1 = {1,2,3,'a',}
set1.add('bbbbbbb')
print(set1) # {1, 2, 3, 'a', 'bbbbbbb'}
2、集合元素的清空:
set.clear()
3、集合元素删除:
1、set.pop()随机删除一个 ,返回删除值。
set1 = {1,2,3,'a',}
set1.pop()
print(set1.pop(),set1) # 2 {3, 'a'}
2、set.remove() 指定删除,没有 值 会报错
3、set.discard()指定删除,没有 值 不作操作。
4、集合元素的查看(遍历):
1、由于无序,不能用索引,通过for循环遍历所有。
2、集合和列表可以相互转换,转换后可以用列表的方式操作,但是每次转换的列表都是不一样的。
四、集合的运算:
1、交集:
(1)set1 & set2 (2)set1.intersection(set2)
2、并集:
(1)set1 | set2 (2)set1.union(set2)
3、差集:
(1)set1 - set2 (2)set1.difference(set2)
4、交叉补集:
(1)set1 ^ set2 (2)set1.symmetric_difference(set2)
set1 = {'a','b','f',1,3,2,2,'a'}
set2 = {'a','b','ggggg'}
print(set1)
print(set1 & set2,set1.intersection(set2))
print(set1 | set2)
print(set1 - set2)
print(set1 ^ set2) #交叉补集
5、 == 相等、 in 属于、 not in 不属于:
set1 = {1,2}
set2 = {1,2,3,4}
print(set1 in set2) ---------- True # bool值可以做条件判断
print(set1 == set2) ---------- False
print(set1 not in set2) ---------- False
五、set数据类型的 小技巧:
- ① set() 转化 iterable对象 时可以去重 ,因此可以去重列表重复元素,但这种去重会改变列表的顺序。