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)    收藏  举报

导航