集合的操作

# 集合操作
# 集合是一个无序的,不重复的数据组合,它的主要作用如下:

# 去重,把一个列表变成集合,就自动去重了
# 关系测试,测试两组数据之前的交集、差集、并集等关系
def nl():
        print('='.ljust(30, '='))

list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list2 = [3, 4, 5, 6, 8, 0, 11, 23, 55]
listNew = []

'''
# for i in list1:
#     listNew = list1.copy()
# print(listNew)    
# for i in list2:
#     if i not in listNew:
#         listNew.append(i)
# print(listNew)
'''
'''
list3 = list1 + list2
print(list3)
list4 = set(list3)
listNew = list(list4)
print(listNew)
'''
'''
for i in list1:
    if i in list2:
        print(i)
'''
list_1 = [1, 4, 5, 7, 3, 6, 7, 9]
print(type(list_1))
list_1 = set(list_1)
list_2 = set([2, 6, 0, 66, 22, 8, 4])
print(list_1, list_2)

'''
关系测试:
----------------------------------------
'''
#交集   (1和2 都有)
print('交集',list_1.intersection(list_2))

#并集   (1和2 加起来)
print('并集',list_1.union(list_2))

#差集 (只存在1不存在2)
print(list_1.difference(list_2))

#子集   (1是2 的子集吗?)   False
print(list_1.issubset(list_2))

#父集   1是2 的父集吗   False
print(list_1.issuperset(list_2))

#对称差集       对称差集(项在t或s中,但不会同时出现在二者中)
# 1 中独有和 2中独有的放在一起
# 其实就是并集中去掉交集的
print(list_1.symmetric_difference(list_2))

#如果两个集合的交集为空,则返回True
# 判断两个集合是否有交集        \
'''
没有返回true
有返回False
'''
print(list_1.isdisjoint(list_2))

'''
运算符方式
'''
a = set([3, 4, 5, 'l'])
b = set('hello')

print(a | b)    #并
print(a & b)    #交
print(a - b)    #差
print(a ^ b)    #对称差

nl()
# 基本操作
#增     单
list_1.add(999)
print(list_1)
#增     多
list_1.update([3, 77, 34])
print(list_1)

#删除一项
list_1.remove(1)
print(list_1)
nl()

#长度
print(len(list_1))
nl()

# 测试 x 是否是 s 的成员
x = 1
s = set([1, 2, 3])
result = x in list_1
print(result)
#==============================
'''
# 测试 x 是否不是 s 的成员
x not in s  

# 测试是否 s 中的每一个元素都在 t 中 
s <= t

# 测试是否 t 中的每一个元素都在 s 中
s >= t
'''
#==============================
'''
s.union(t)  
s | t  
返回一个新的 set 包含 s 和 t 中的每一个元素 
'''
#==============================
'''
s.intersection(t)  
s & t  
返回一个新的 set 包含 s 和 t 中的公共元素  
  
s.difference(t)  
s - t  
返回一个新的 set 包含 s 中有但是 t 中没有的元素  
  
s.symmetric_difference(t)  
s ^ t  
返回一个新的 set 包含 s 和 t 中不重复的元素  
  
s.copy()  
返回 set “s”的一个浅复制  
'''

#删除任意一个元素并返回
aa = set([1, 2, 3, 4, 5, 'a', 'b', 'c'])
ret = aa.pop()
print(ret)
print(aa)

#从集合中删除元素(如果它是成员)。
# 如果元素不是成员,则什么也不做。
print(aa.discard('a'))          #存在 'a' 所以删除了'a'
print(aa)
print(aa.discard(6))            # 6不存在所以返回none

nl()

  

posted @ 2019-08-21 01:26  jack-kaller  阅读(159)  评论(0编辑  收藏  举报