集合是无序的,无重复元素的序列。
创建方式:
- set(value) 只能给一个参数value
- { }
- set(tuple), set(list) 将元组和列表转成集合(附带升序效果)
# 下面展示两个集合间的运算.
创建集合
a = set('abracadabra')
b = set('alacazam')
A = set(('abracadabra'))
a
{'a', 'r', 'b', 'c', 'd'}
A
{'abracadabra'}
>>> a - b # 集合a中包含元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
>>>a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}
添加元素:
-
s.add( x )
-
s.update( x ) , x可以是列表,元组,字典等
s.update( "字符串" ) 与 s.update( {"字符串"} ) 含义不同:
thisset = set(("Google", "Runoob", "Taobao"))
print(thisset)
{'Google', 'Runoob', 'Taobao'}
#s.update( {"字符串"} ) ,将字符串添加到集合中,有重复的会忽略。
thisset.update({"Facebook"})
print(thisset)
{'Google', 'Runoob', 'Taobao', 'Facebook'}
#s.update( "字符串" ) 将字符串拆分单个字符后,然后再一个个添加到集合中,有重复的会忽略。
thisset.update("Yahoo")
print(thisset)
{'h', 'o', 'Facebook', 'Google', 'Y', 'Runoob', 'Taobao', 'a'}
删除元素
-
s.remove( x ) 从集合中移除x; 如果元素不存在,会发生错误
-
s.discard( x ) 移除集合中的元素; 且如果元素不存在,不会发生错误
-
s.pop() 删除排序后的集合的第一个元素,返回值为此元素。
其他方法:
-
s.copy() 拷贝一个集合
- x in s 逻辑运算符
- len(s) 元素个数
- s.clear() 清空
-
set2.difference(set1) 返回两集合的差集
- set1.intersection(set2, set3 ... etc) 返回两个或多个集合中都包含的元素,即交集(返回的是集合),且set1没有更新。
- set1.intersection_update(set2, set3) 用set1,set2, set3的交集更新set1,无返回值
-
set1.symmetric_difference(set2) 返回一个新集合,去掉两集合交集后的并集。
-
set1.symmetric_difference_update(set2) 去掉两集合交集后的并集去更新set1。
- s.isdisjoint(set) 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
-
set1.issubset(set2) set1是否为子集
-
set1.issuperset(set) set1是否为父集
-
set.union(set1, set2...) 返回两个或多个集合的并集,不更新原集合。