集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建一个空集合 和 空字典
empty_set = set()
empty_dict = {}
print(empty_set)
print(empty_dict)
print(type(empty_set))
print(type(empty_dict))
'''
set()
{}
<class 'set'>
<class 'dict'>
'''
集合的运算
a = set('abracadabra')
b = set('alacazam')
print(a)
print(b)
print(a - b) #差集
print(a | b) #并集
print(a & b) #交集
print(a ^ b) #两集合各自独有的==并-交
'''
{'r', 'd', 'b', 'c', 'a'}
{'a', 'l', 'z', 'c', 'm'}
{'d', 'r', 'b'}
{'r', 'l', 'd', 'm', 'b', 'c', 'z', 'a'}
{'c', 'a'}
{'m', 'z', 'r', 'b', 'l', 'd'}
'''
集合的基本操作
set.add(x) 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)
'''
{'Taobao', 'Facebook', 'Google', 'Runoob'}
'''
s.update( x ) 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。x 可以有多个,用逗号分开。
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Runoob'}
>>> thisset.update([1,4],[5,6])
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
s.remove(x) 将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
s.discard(x) 将元素 x 从集合 s 中移除,如果元素不存在,不会发生错误。
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
s.discard(x) 移除集合中的元素,且如果元素不存在,不会发生错误。
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}
s.pop() 随机删除集合中的一个元素,因为集合是无序的
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()
print(x)
'''
Runoob
'''
len(s) 计算集合s元素的个数
>>>thisset = set(("Google", "Runoob", "Taobao"))
>>> len(thisset)
3
s.clear() 清空一个集合
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> thisset
{'Facebook', 'Taobao', 'Google', 'Runoob'}
>>> thisset.clear()
>>> thisset
set()
x in s 判断x是否在集合s中
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> "Google" in thisset
True
>>> "hello" in thisset
False
intersetcion() 求交集(不改变原有集合)
difference() 求差集(不改变原有集合)
unoin() 求并集(不改变原有集合)
symmetric_difference() 对称差集
举**intersetcion()**例子:
>>> s = set("Hacker")
>>> print(s.intersection("Rank"))
{'a', 'k'}
>>> print s.intersection(['R', 'a', 'n', 'k'])
set(['a', 'k'])
>>> s & set("Rank")
set(['a', 'k'])
issubset() 是否为子集
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> anotherset = set(("Google", "Runoob"))
>>> thisset.issubset(anotherset)
False
>>> anotherset.issubset(thisset)
True