数据类型 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://www.bubuko.com/infodetail-2362189.html