python集合set
# 集合学习
# set是一个无序且不重复的元素集合
# set对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。
# set支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小)
# 用for循环迭代集合的成员
# 因为集合是无序的,所以不可以为集合创建索引或执行切片(slice)操作,也没有键可用来获取集合中元素的值
# set和dict类似,只是set没有元素value,相当于dict的key的集合
# set特性如下:
#   1.不重复
#   2.元素为不可变对象
# K1 创建(三种创建方式)
set1 = {"1","2"}                #第一种创建方式
list2 = ["1","2","3","4"]
set2 = set(list2)             #第二种创建方式
s = set()                 #第三种方式 创建空集合,注意在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典
print("type(set1) = ",set1,type(set1))
print("type(set2) = ",set2,type(set2))
a = set('boy')
print(a,type(a))                                #{'o', 'y', 'b'} <class 'set'>
b = set(['y','b','o','o'])           #set集合会去掉重复
print(b,type(b))                                #{'b', 'y', 'o'} <class 'set'>
c = set({"k1":"v1","k2":"v2"})            #只取key值
print(c,type(c))                                # {'k2', 'k1'} <class 'set'>
d = {'k1','k2','k3','k2'}
print(d,type(d))                                # {'k2', 'k3', 'k1'} <class 'set'>
e={('k1', 'k2','k2')}
print(e,type(e))               #{('k1', 'k2', 'k2')} <class 'set'>
# K2 添加元素 add是添加一个元素和update有区别
# add 是把要传入的元素做为一个整个添加到集合中
# update 是把要传入的元素拆分,做为个体传入到集合中
s.add(123)
s.add(234)
print("s = ",s)                                   # s =  {234, 123}
s.update('duanzw')                              #把se和be取并集并把得到的值更新se
print("s = ",s)                # s =  {'u', 234, 'a', 'd', 'z', 'w', 123, 'n'}
# K3 删除 discard remove pop clear
s = {11, 22, 33}
s.discard(11)
s.discard(44)                                     #删除不存在元素不会报错
print("s = ",s)
s.add(11)
s.remove(11)
# s.remove(44)                                    #删除不存在元素会报错
s.add(11)
temp = s.pop()                                    #删除末尾元素并把移除的元素返回
print("s = ",s)
print("temp = ",temp)
# K4 判断
se = {11, 22, 33}
be = {22}
print(se.isdisjoint(be))                      #False 判断是否不存在交集(False 有交集 True 无交集) 注意是判断不存在交集
print(se.issubset(be))                        #False 判断se是否为be的子集
print(se.issuperset(be))                      #True 判断se是否为be的父集
# K5 并集 union 或者 a|b update
se = {11, 22, 33}
be = {22,44,55}
temp1 = se.union(be)
temp2 = se | be
print("se = ",se)
print("union = ", temp1)
print("union = ", temp2)
se.update(be)                                   #把se和be取并集并把得到的值更新se
print("se = ",se)
se = {11, 22, 33}
be = {22,44,55}
temp1 = se.symmetric_difference(be)           # 合并不同项,并赋新值
print(temp1)                                              #{33, 11}
print(se)                                                    #{33, 11, 22}
temp2 = se.symmetric_difference_update(be)  # 合并不同项,并更新自己
print(temp2)                                                #None
print(se)                                                     #{33, 11}
# K6 交集 intersection 或者a&b
se = {11, 22, 33}
be = {22, 55}
temp1 = se.intersection(be)                     #取交集,赋给新值
print(temp1)                                            # 22
print(se)                                                 # {11, 22, 33}
temp2 = se.intersection_update(be)          #取交集并更新自己
print(temp2)                                          # None
print(se)                                               # 22
# K7 差集 difference a-b
#    对称差集 symmetric_difference a^b
se = {11, 22, 33}
be = {22, 55}
temp1 = se.difference(be)                   #取差集,赋给新值
print(temp1)
print(se)
temp2 = se.difference_update(be)               #取差集,并更新自己 返回None
print(temp2)
print(se)
# K7 集合的转换
se = set(range(4))
list = list(se)
tu = tuple(se)
st = str(se)
print(se,type(se))
print(list,type(list))
print(tu,type(tu))
print(st,type(st))
posted on 2018-02-21 15:39 duanzw_一介布衣 阅读(113) 评论(0) 收藏 举报
                    
                
                
            
        
浙公网安备 33010602011771号