数据结构 -- 集合

 

集合

In [1]:
# 集合是无序的(所以不能同过索引取值),不可重复的数据集合
# 它里面的元素是可哈希的(不可变数据类型),但集合本身是可哈希的
# 集合最重要的两点,去重和关系测试
 

创建集合

In [2]:
# 集合也是使用{}来表示,但是空集合不能使用{}要使用set()
a = set()
print(a,type(a))
 
set() <class 'set'>
In [3]:
a = {1,2,3}
print(a,type(a))
 
{1, 2, 3} <class 'set'>
 

集合的修改

In [8]:
# add() 添加元素
a = {1,2,3}
a.add("wa")
print(a)
 
{'wa', 1, 2, 3}
In [9]:
# update() 迭代去增
a = {1,2,3}
a.update("wa")
print(a)
 
{1, 2, 3, 'w', 'a'}
In [10]:
# remove() 删除指定元素
a = {1,2,3}
a.remove(1)
print(a)
 
{2, 3}
In [11]:
# pop() 随机删除,并返回结果
a = {1,2,3}
b = a.pop()
print(a,b)
 
{2, 3} 1
In [12]:
# clear() 清空集合
a = {1,2,3}
a.clear()
print(a)
 
set()
In [13]:
# del 删除集合
a = {1,2,3}
del a # 之后a不存在
print(a)
 
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-13-ae79a7c4c0d0> in <module>()
      2 a = {1,2,3}
      3 del a
----> 4print(a)

NameError: name 'a' is not defined
In [14]:
# 集合不能去修改其中的值,只能添加或删除,可以通过循环去遍历
 

集合的关系测试

In [15]:
# 交集 &  或者 intersection
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 & set2)
print(set1.intersection(set2)) 
 
{4, 5}
{4, 5}
In [16]:
# 并集 | 或者 union
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2)
print(set2.union(set1)) 
 
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
In [17]:
# 反交集 ^ 或者 symmetric_difference
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))
 
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}
In [18]:
# 子集与超集
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}

print(set1 < set2)
print(set1.issubset(set2)) # set1是set2的子集
 
True
True
In [19]:
print(set2 > set1)
print(set2.issuperset(set1)) # set2是set1的超集
 
True
True
In [20]:
# 创建不可修改的集合
s = frozenset({1,2,3,4}) 
print(s,type(s))
 
frozenset({1, 2, 3, 4}) <class 'frozenset'>
In [21]:
# 尝试删除集合元素
s.pop()
 
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-21-56190eb55043> in <module>()
      1 # 尝试删除集合元素
----> 2s.pop()

AttributeError: 'frozenset' object has no attribute 'pop'
posted @ 2018-03-28 10:41  瓜田月夜  阅读(83)  评论(0)    收藏  举报