集合

'''
集合:可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。
不可变是可哈希的: 数字  字符串 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)

 

posted @ 2020-02-01 18:36  菩提老祖师傅  阅读(62)  评论(0)    收藏  举报