python set

set

set 是一个无序并不重复的元素的集合,每一个值都是唯一的不重复的。

速度快,解决重复问题

In [1]: s1=set()
In [2]: s1.add("a")

In [4]: print s1
set(['a'])
In [5]: s1.add("a")
In [6]: print s1
set(['a'])
In [7]:

s2= set(["alex","eric","tony","alex"])
print s2 #set(['tony', 'alex', 'eric'])
s3=s2.difference(["alex","eric"])
print s2
print s3 #set(['tony'])

 

 

差集


difference 俩个集合比较,找出不同的返回一个新的集合

difference_update  删除传来的元素,留下不同的元素

,clean,

取交集,创建一个新的

intersection

 

取交集,修改原来的集合

intersection_update

 

如果没有交集,返回true

isdisjoint

 

是否是子集

issubset

 

是否是父集

issuperset

 

移除元素

discard

 

remove 的同时获取这个值,自己取

pop

 

移除,要指定一个

remove

 

计算两个集合的差集,改变原来的

symmetric_difference_update

 

对称差

symmetric_differenve

 

并集

union

 

更新

update

 

#http://www.cnblogs.com/linhaifeng/articles/7133357.html
# 集合
# 不能重复的元素出现的特殊列表,
# 访问速度快,解决重复问题,爬虫
# 去重,关系运算
# 集合 元素不可变,没有顺序的

# 列表 转换成集合
l=['a','b',1,'a','a']
set(l)

# 集合转列表
l_new=list()
s=set()
# 去重
l1=[]
s=set()
for i in l:
    if i not in s:
        s.add(i)
        l1.append(i)

print(l1)




s2={1,2,'a','b',3,4} # 以逗号分开
# 成员运算 in ,not in
# 长度 len()

# | 并集
s1={1,2,'d','f'}
print(s1|s2)
#  - 差集  #
print(s1-s2)
# & 交集 # 同时同存两个集合的元素
print(s1&s2)
# ^ 对称交集 # 减去交集 的部分
print(s1^s2)

"""
集合之间包含之间关系

==
> 
>=
<
<=

"""

s2= set(["alex","eric","tony","alex"]) #{'alex', 'eric', 'tony'}
print (s2)  #set(['tony', 'alex', 'eric'])
s3=s2.difference(["alex","eric"]) # 没有改变值钱的集合,把不同的值 生成新的集合
print ("s2:",s2)
print ("s3",s3) #set(['tony'])

# s3.clear() # 清空
# s3.copy() #钱copy
# s3.difference()
# s3.difference_update() 把传来的值从集合里面移除
s4 = s2.difference_update(["alex","eric"]) #传来的元素
print("s4",s4) # 不会生成新的集合
print("s2",s2) # 'tony'
#
# s2.difference()
#  取差集,并创建一个新的集合
# s2.difference_update()
#  取差集,不会生成新的集合,修改原来的集合
# s2.intersection()
#  取交集,并创建一个新的集合
# s2.intersection_update()
# #取交集,不会生成新的集合,修改原来的集合
# s2.symmetric_difference()
#  取对称差集,并创建一个新的集合
# s2.symmetric_difference_update()
#  #取对称差集,不会生成新的集合,修改原来的集合
#
# s2.isdisjoint() # 如果没有交集,返回1
# s2.issubset() # 是否是子集
# s2.issuperset() # 是否是父集
# s2.pop() # 随机 (没有索引)移除元素的同时得到这个值,
#s2.add() # 添加元素,没有顺序
#s2.discard() # 删除元素,没有的话不会报错,没有返回值
# s2.remove() # 只是移除元素,指定值,没有返回值,没有的话就报错
# s2.union() # 并集
# s2.update()# 更新数据

# 原来没有 》 新加入
# 原来有 》 更新
# 原来有 》 新数据没有  原来的删除
# 差集
s1 = set([11,22,33,44])
s2 = set([22,55])
print(s1.difference(s2)) #{33, 11, 44} 只是拿掉s1 里面的s2 有的元素
print(s1.symmetric_difference(s2)) # {33, 11, 44, 55} # 所有不一样的元素


pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','oldboy','gangdan'}

print(pythons.intersection(linuxs)) # 交集,不改变原来的集合
print(pythons.union(linuxs)) #两个集合的并集/和集
print(pythons.difference(linuxs)) #集合的差集
print(pythons.symmetric_difference(linuxs))
#求出没有同时这两门课程的学员名字集合,对称交集

print(pythons | linuxs) # 和集/并集
print(pythons - linuxs) # 差集
#{'egon', 'alex', 'biubiu', 'yuanhao'}
print(pythons & linuxs) # 交集
#{'wupeiqi', 'gangdan'}
print(pythons ^ linuxs) # 对称差集
#{'egon', 'alex', 'biubiu', 'oldboy', 'yuanhao'}

 

posted @ 2017-09-11 19:25  guazhang  阅读(157)  评论(0)    收藏  举报