码迷,mamicode.com
首页 > 编程语言 > 详细

python 基本数据类型之set

时间:2017-10-23 01:07:58      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:数据类型   set   python   


set是一个无序且不重复的元素集合,相当于字典的键,不重复,不可变

一、set变量初始化

A = set() #注意在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典
B = {"one", "two", "three", "four"}
C = set(‘boy‘)
D = set([‘y‘, ‘b‘, ‘o‘])
E = set({"k1": ‘v1‘, ‘k2‘: ‘v2‘})
F = {‘k1‘, ‘k2‘, ‘k2‘}
G = {(‘k1‘, ‘k2‘, ‘k2‘)}
print (A, type(A))
print (B, type(B))
print (C, type(C))
print (D, type(D))
print (E, type(E))
print (F, type(F))
print (G, type(G))

运行结果:
(set([]), <type ‘set‘>)
(set([‘four‘, ‘three‘, ‘two‘, ‘one‘]), <type ‘set‘>)
(set([‘y‘, ‘b‘, ‘o‘]), <type ‘set‘>)
(set([‘y‘, ‘b‘, ‘o‘]), <type ‘set‘>)
(set([‘k2‘, ‘k1‘]), <type ‘set‘>)
(set([‘k2‘, ‘k1‘]), <type ‘set‘>)
(set([(‘k1‘, ‘k2‘, ‘k2‘)]), <type ‘set‘>)

二、集合关系

print E & F  # E 和 F的交集  
print A | B  # A 和 B的并集  
print B - A  # 求差集(项在B中,但不在A中)
print D ^ E  # 对称差集(项在D或E中,但不会同时出现在二者中)  
运行结果:
set([‘k2‘, ‘k1‘])
set([‘four‘, ‘one‘, ‘three‘, ‘two‘])
set([‘four‘, ‘one‘, ‘three‘, ‘two‘])
set([‘y‘, ‘k2‘, ‘k1‘, ‘b‘, ‘o‘])
x = set([‘i‘, ‘e‘, ‘m‘, ‘d‘, ‘t‘])
y = set(["i", "d", "e", "a"])
print x.union(y)                # 并集
set([‘e‘, ‘d‘, ‘i‘, ‘h‘, ‘j‘, ‘m‘, ‘t‘])
print x.intersection(y)         # 交集
set([‘i‘, ‘e‘, ‘t‘])
print x.difference(y)           # 差集
set([‘h‘, ‘j‘])
print x.symmetric_difference(y) # 对称差
运行结果:
set([‘a‘, ‘e‘, ‘d‘, ‘i‘, ‘m‘, ‘t‘])
set([‘i‘, ‘e‘, ‘d‘])
set([‘m‘, ‘t‘])
set([‘a‘, ‘m‘, ‘t‘])
se = set(["AA", "BB", "CC", "DD"])
ke = set(["AA", "BB"])
print se.difference(ke)   # A中存在 ,B中不存在 ,生成一个新序列
se.difference_update(ke)  #  A中存在 ,B中不存在 ,更改原序列
print se
print se.symmetric_difference(ke)  # 对称交集,生成新序列
se.symmetric_difference_update(ke)  #对称交集,更新原序列
print se
运行结果:
set([‘CC‘, ‘DD‘])
set([‘CC‘, ‘DD‘])
set([‘AA‘, ‘CC‘, ‘DD‘, ‘BB‘])
set([‘AA‘, ‘BB‘, ‘CC‘, ‘DD‘])

三、包含关系

se = set(["AA", "BB", "CC", "DD"])
ke = set(["AA", "BB"])
print se.isdisjoint(ke) # 判断两个集合是不是不相交
print se.issubset(ke) # 判断集合是不是被其他集合包含,等同于a<=b
print se.issuperset(ke) # 判断集合是不是包含其他集合,等同于a>=b
运行结果:
False
False
True

四、添加元素

se = set(["AA", "BB", "CC"])
ke = set({"11", "22"})
print se
se.add("dd")   #  添加一个元素
print se
se.update(["DD", "EE"])  # 添加多个元素
print se
se.update(ke)  # 添加另一个集合的元素
print se

set([‘AA‘, ‘CC‘, ‘BB‘])
set([‘AA‘, ‘CC‘, ‘dd‘, ‘BB‘])
set([‘AA‘, ‘BB‘, ‘CC‘, ‘dd‘, ‘EE‘, ‘DD‘])
set([‘AA‘, ‘11‘, ‘22‘, ‘BB‘, ‘CC‘, ‘dd‘, ‘EE‘, ‘DD‘])

五、删除元素

se = set(["AA", "BB", "CC", "DD"])
se.discard("AA")
print se
se.remove("BB")  #  元素不存在时会抛出异常
print se
se.pop() # 弹出一个值,随机的,不能指定
print se
运行结果:
set([‘CC‘, ‘DD‘, ‘BB‘])
set([‘CC‘, ‘DD‘])
set([‘DD‘])

六、去除重复值

a = [11, 22, 33, 44, 55, 11, 33]
b = set(a)
print list(b)
运行结果:
[33, 11, 44, 22, 55]

七、常用方法

class set(MutableSet[_T], Generic[_T]):
    def add(self, element: _T)   # 添加一个元素
    def clear(self) # 清空集合
    def copy(self)
    def difference(self, *s: Iterable[Any])  # A中存在 B中不存在,返回一个新集合,可赋值给其他变量
    def difference_update(self, *s: Iterable[Any]) # A中存在 B中不存在,直接更改集合A
    def discard(self, element: _T) #  删除单个元素
    def intersection(self, *s: Iterable[Any])
    def intersection_update(self, *s: Iterable[Any])
    def isdisjoint(self, s: Iterable[Any]) # 判断两个集合是不是不相交
    def issubset(self, s: Iterable[Any]) # 判断集合是不是被其他集合包含,等同于a<=b
    def issuperset(self, s: Iterable[Any]) # 判断集合是不是包含其他集合,等同于a>=b
    def pop(self) # 弹出一个元素,随机的,不可指定
    def remove(self, element: _T) # 移除单个元素,如果该元素不存在在该集合,则会报错
    def symmetric_difference(self, s: Iterable[_T])
    def symmetric_difference_update(self, s: Iterable[_T])
    def union(self, *s: Iterable[_T])
    def update(self, *s: Iterable[_T]) # 更新单个元素,或其他集合


本文出自 “学无止境” 博客,请务必保留此出处http://20120809.blog.51cto.com/10893237/1975068

python 基本数据类型之set

标签:数据类型   set   python   

原文地址:http://20120809.blog.51cto.com/10893237/1975068

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!