九.Python3 集合

集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

parame = {value01,value02,...}
或者
set(value)
# 定义不可变集合
frozenset(value)
# s=set('hello')
# print(s)
# s=set(['alex','alex','sb'])
# print(s)

# s={1,2,3,4,5,6}
#添加
# s.add('s')
# s.add('3')
# s.add(3)#已有元素,可执行,无效果
# print(s)
#清空
# s.clear()
# print(s)
#复制
# s1=s.copy()

s={'sb',1,2,3,4,5,6}
#随机删
# s.pop()
#指定删除
# s.remove('sb')
# s.remove('hellol') #删除元素不存在会报错
# s.discard('sbbbb')#删除元素不存在不会报错
# print(s)
# python_l=['lcg','szw','zjw','lcg']
# linux_l=['lcg','szw','sb']
#列表转换为集合
# p_s=set(python_l)
# l_s=set(linux_l)
# #求交集
# print(p_s,l_s)
# print(p_s.intersection(l_s))
# print(p_s&l_s)
# #求并集
# print(p_s.union(l_s))
# print(p_s|l_s)
# #差集
# print('差集',p_s-l_s)
# print(p_s.difference(l_s))
# print('差集',l_s-p_s)
# print(l_s.difference(p_s))
#交叉补集
# print('交叉补集',p_s.symmetric_difference(l_s))
# print('交叉补集',p_s^l_s)

python_l=['lcg','szw','zjw','lcg']
linux_l=['lcg','szw','sb']
p_s=set(python_l)
l_s=set(linux_l)
print(p_s,l_s)
# print('差集',p_s-l_s)
# p_s=p_s-l_s
p_s.difference_update(l_s)
print(p_s)

# s1={1,2}
# s2={2,3,5}
# print(s1.isdisjoint(s2))

s1={1,2}
s2={1,2,3}
print(s1.issubset(s2))#s1 是s2 的子集
print(s2.issubset(s1))#False
print(s2.issuperset(s1))#s1 是s2 的父集

s1={1,2}
s2={1,2,3}
# s1.update(s2) #更新多个值

# s1.add(1,2,3,4) #更新一个值
# s1.union(s2) #不更新
print(s1)

s=frozenset('hello')
print(s)
names=['alex','alex','wupeiqi']
names=list(set(names))
print(names)
示例

 

list的简单去重:

names=['alex','alex','wupeiqi']
#set()转换为集合,去重,再转换回列表,达到列表去重的目的
names=list(set(names))
print(names)

  

Python集合方法

 

序号方法
1 add(obj)
在集合中添加一个元素,如果元素已经存在,不会抛出异常
2 clear() 
删除集合中的所有元素(清空集合)
3 copy() 
复制(浅拷贝)集合
4 difference(s2)
返回两个或多个集合的差值作为一个新集合(差集),同 s1 - s2
5 difference_update(s2)
从该集合中删除其他集合的所有元素(把差集赋值给该集合)
6 discard()
与remove()功能相同,从集合中删除一个元素,如果元素不在集合中不会抛出异常
7 intersection(s2)
返回两个集合的交集作为一个新集合(交集),同 s1 & s2
8 intersection_update(s2)
更新该集合,从自己与另一个集合的交集(把交集赋值给该集合)
9 isdisjoint(s2)
判断两个集合是否不相交,不相交时返回True
10 issubset(s2)
判断该集合是否是其他集合的子集,如果是返回True 同 <=
11  issuperset(s2)
判断该集合是否包含其他集合,如果包含返回True 同 >=
12  pop()
删除并返回一个集合中的一个随机元素,当集合为空时会抛出异常
13  remove()
与discard()功能相同,从集合中删除一个元素,如果元素不在集合中会抛出异常
14  symmetric_difference(s2)
返回两个集合的对称差作为一个新的集合(对称差集),同 s1 ^ s2
15 symmetric_difference_update(s2)
更新该集合,从自己与另一个集合的对称差集(把对称差集赋值给该集合)
16 union(s2)
返回所有集合的并值作为一个新集合(并集),同 s1 | s2
17 update(iterable)
在集合中添加元素,通过一个可迭代对象  相较add,可传多个值
18 in/not in
判断某个元素是否在集合中
19 ==/!=
判断两个集合是否相等
posted @ 2018-02-27 16:18  Cslc-DaweiJ  阅读(173)  评论(0编辑  收藏  举报