#!/usr/bin/env python
# -*- coding:utf-8 -*-
#Author:sking
#python3集合操作方法详解 python3集合操作大全
#集合是无序的
#创建集合
a = {1,2,3} #正确
b = set([1,2,3]) #正确
c = set((1,2,3)) #正确
d = set({1:3,2:4}) #结果{1, 2} 只能取字典的key
#add添加集合中的元素(添加一项)
a = set([1,2,3])
a.add(4)
print(a) #{1, 2, 3, 4}
#update添加集合中的元素(添加多项)
b = set([1,2,3])
b.update([4,5,6])
print(b) #{1, 2, 3, 4, 5, 6}
#remove删除集合中的元素(删除一项) 如果不存在就会报错
a = set([1,2,3])
a.remove(2)
print(a) #{1, 3}
#discard删除集合中的元素(删除一项)如果不存在不会报错
n = set([2,3,4])
n.discard(3)
print(n) #{2, 4}
#pop(随机移除一个元素)
n = set([2,3,4,5])
n1 = n.pop()
print(n,n1) #{3, 4, 5} 2
#clear(清空所有元素)
name = set(['Tom','Lucy','Ben'])
name.clear()
print(name) #输出:set()
#len计算集合长度
a = set([1,2,3])
b = set(['aaa', 'bbb', 'ccc'])
print(len(a), len(b)) #3 3
#in判断某一个元素是不是在集合中
a = set([1,2,3])
print(1 in a) #True
#copy浅复制
a = set([1,2,3])
b = a.copy()
print(b) #{1, 2, 3}
print('+_+_+_+_+_+_++_+_+_+_+_+_+_')
a = [1,2,3,1,4,5,3,6]
b = set(a) #去除列表a中重复的元素
print(b) #{1, 2, 3, 4, 5, 6}
print(type(b)) #<class 'set'>
c = set([1,2,3,4,5,6])
d = set([1,2,3,8,9,0])
#求交集
#方法1
print(c.intersection(d)) #{1, 2, 3}
#方法2
print(c & d) #{1, 2, 3}
#求并集(就是都放在一起,相同的仅保留一个)
#方法1
print(c.union(d)) #{0, 1, 2, 3, 4, 5, 6, 8, 9}
#方法2
print(c | d) #{0, 1, 2, 3, 4, 5, 6, 8, 9}
#求差集(就是求1里面有而2里面没有的,也就是去掉1里面和2相同的元素)
#方法1
print(c.difference(d)) #{4, 5, 6}
#方法2
print(c - d) #{4, 5, 6}
#对称差集(就是把两个集合中不相同的元素提取出来)
c = set([1,2,3,4,5,6])
d = set([1,2,3,8,9,0])
#方法1
print(c.symmetric_difference(d)) #{0, 4, 5, 6, 8, 9}
#方法2
print(c ^ d) #{0, 4, 5, 6, 8, 9}
#判断子集和父集
a = set([1,2,3])
b = set([1,2,3,4,5,6])
#判断a是否是b的子集
print(a.issubset(b)) #True
#判断b是否是a的父集
print(b.issuperset(a)) #True
#判断两个集合是否有交集,没有交集就返回True,有交集就返回False
a = set([1,2,3])
b = set([4,5,6])
c = set([1,4,5])
print(a.isdisjoint(b)) #True
print(a.isdisjoint(c)) #False
"""
add(增加元素)
name = set(['Tom','Lucy','Ben'])
name.add('Juny')print(name) #输出:{'Lucy', 'Juny', 'Ben', 'Tom'}
clear(清空所有元素)
name = set(['Tom','Lucy','Ben'])
name.clear()
print(name) #输出:set()
copy(拷贝set集合)
name = set(['Tom','Lucy','Ben'])
new_name = name.copy()print(new_name) #输出:{'Tom', 'Lucy', 'Ben'}
difference(返回两个或多个集合中不同的元素,并生成新的集合)
A = set([2,3,4,5])
B = set([3,4])
C = set([2])
n = n1.difference(n2,n3)
print(n) #输出:{5}#返回A集合里面,在B和C集合中没有的元素,并生成新的集合
difference_update(删除A集合里面,在B集合中存在的元素。)
A = set([2,3,4,5])
B = set([4,5])
A.difference_update(B)
print(A) #输出:{2, 3}
discard(移除元素)
n = set([2,3,4])
n.discard(3)
print(n) #输出:{2, 4}
intersection(取交集,并生成新的集合)
n1 = set([2,3,4,5])
n2 = set([4,5,6,7])
n = n1.intersection(n2)
print(n) #输出:{4, 5}
intersection_update(取交集,修改原来的集合)
n1 = set([2,3,4,5])
n2 = set([4,5,6,7])
n1.intersection_update(n2)
print(n1) #输出:{4, 5}
isdisjoint(判断交集,是返回False,否返回True)
n1 = set([2,3,4,5])
n2 = set([4,5,6,7])
print(n1.isdisjoint(n2)) #输出:False
issubset(判断子集)
A = set([2,3])
B = set([2,3,4,5])
print(A.issubset(B)) #输出:True#A是B的子集
issuperset(判断父集)
A = set([2,3])
B = set([2,3,4,5])
print(B.issuperset(A)) # 输出:True#B是A的父集
pop(随机移除一个元素)
n = set([2,3,4,5])
n1 = n.pop()
print(n,n1) # 输出:{3, 4, 5} 2
remove(移除指定元素)
n = set([2,3,4,5])
n.remove(2)
print(n) # 输出:{3, 4, 5}
symmetric_difference(取交集,并生成新的集合)
A = set([2,3,4,5])
B = set([4,5,6,7])
print(A.symmetric_difference(B)) # 输出:{2, 3, 6, 7}
symmetric_difference_update(取交集,改变原来的集合)
A = set([2,3,4,5])
B = set([4,5,6,7])
A.symmetric_difference_update(B)
print(A) # 输出:{2, 3, 6, 7}
union(取并集,并生成新的集合)
A = set([2,3,4,5])
B = set([4,5,6,7])
print(A.union(B)) # 输出:{2, 3, 4, 5, 6, 7}
update(取并集,改变原来的集合)
A = set([2,3,4,5])
B = set([4,5,6,7])
A.update(B)
print(A) # 输出:{2, 3, 4, 5, 6, 7}
"""
/////////////////////
{1, 2, 3, 4}
{1, 2, 3, 4, 5, 6}
{1, 3}
{2, 4}
{3, 4, 5} 2
set()
3 3
True
{1, 2, 3}
+_+_+_+_+_+_++_+_+_+_+_+_+_
{1, 2, 3, 4, 5, 6}
<class 'set'>
{1, 2, 3}
{1, 2, 3}
{0, 1, 2, 3, 4, 5, 6, 8, 9}
{0, 1, 2, 3, 4, 5, 6, 8, 9}
{4, 5, 6}
{4, 5, 6}
{0, 4, 5, 6, 8, 9}
{0, 4, 5, 6, 8, 9}
True
True
True
False
[Finished in 0.2s]