'''
集合:可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。
不可变是可哈希的: 数字 字符串 bool 元组
可变是不可哈希的 :字典{} 列表 集合
{}
'''
set1 = set({1,2,3})
set2 = {1,2,3,[2,3],{'name':'alex'}} # 错的
print(set1)
print(set2)
li = ['alex',123,True,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'alex'}]
# li.extend(123) # 报错,int是不可迭代对象
# print(li)
li.extend('123') # 字符串是可迭代对象,添加的时候都分开添加,拆成‘1’,‘2’,‘3’
print(li)
set1 = {'alex','wusir','ritian','egon','barry',}
增
add
set1.add('女神')
update
set1.update('abc') # 可迭代增加,类似于列表中的extend('123')
结果{'wusir', 'ritian', 'barry', 'egon', 'alex', 'b', 'c', 'a'}
print(set1) # 无序的
删除
print(set1.pop())
print(set1) # 随机删除某个值
结果
{'egon', 'b', 'wusir', 'ritian', 'barry', 'alex', 'c', 'a'}
egon
{'b', 'wusir', 'ritian', 'barry', 'alex', 'c', 'a'}
set1.remove('alex') # 按元素
print(set1)
set() 空集合 ,{}空字典
set1.clear()
print(set1) # set()
del set1
print(set1)
没有改,每个元素是不可变数据类型
查
只能for 循环查
for i in set1:
print(i)
求交集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set3 = set1 & set2 #求交集
print(set3) # {4, 5}
print(set1.intersection(set2)) # {4, 5} #求交集
求并集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7,8} # 求并集
print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7} # 求并集
反交集,就是除了交集以外的部分,如交集是{4,5}
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8}
差集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2) # {1, 2, 3}
#set1独有的,set2没有的部分
print(set1.difference(set2)) # {1, 2, 3}
子集
set1 = {1,2,3,}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。
print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。
去重
将列表转化成集合自动去重,然后再将集合转化成列表,就完成了列表去重
li = [1,2,33,33,2,1,4,5,6,6]
set1 = set(li)
print(set1)
li = list(set1)
print(li)
s1 = {1,2,3}
print(s1,type(s1))
转化成不可变数据类型
s1 = {1,2,3}
print(s1,type(s1))
s = frozenset('barry')
print(s,type(s))
for i in s:
print(i)