Python 数据类型 -- 集合

– Start

点击此处观看本系列配套视频。


什么是集合?

同列表类似,集合用来存储一系列的值,但是它不允许有重复值,也不保证先后顺序,所以我们不能根据索引访问集合。
Python 支持两种类型的集合 set 与 frozenset,它们的区别是 set 是可变的,frozenset 不可变。

如何构造集合?

a = {1, 2, 3, 4, 5}
b = set({1, 2, 3, 4, 5})
c = set([1, 2, 3, 4, 5]) # 列表转为集合
d = set((1, 2, 3, 4, 5)) # 元组转为集合
e = set('abcd') # 字符串转为集合
f = set({'one':1}.keys()) # 字典转为集合
g = f.copy() # 复制集合
h = set() # 空集合,{} 是空字典
i = {x for x in range(5)} # 集合推导

集合操作符

s = {1, 2, 3, 4, 5}

# 判断元素是否存在
1 in s
1 not in s

集合方法

s = {1, 2, 3, 4, 5}

s.add(6)  # 增加方法
len(s)    # 查看集合长度

s.remove(6)  # 删除,不存在抛异常
s.discard(7) # 删除
i = s.pop()  # 删除并返回
s.clear()    # 删除所有
del s        # 删除对象

集合操作

#----------------- 并集: {1, 2, 3}
s = {1, 2}
t = {2, 3}

# s 与 t 的并集
s.update(t) 
s |= t

#返回 s 与 t 的并集
stu = s.union(t)
stu = s | t


#----------------- 交集: {2}
s = {1, 2}
t = {2, 3}

# s 与 t 的交集
s.intersection_update(t)
s &= t 

# 返回 s 与 t 的交集
sti = s.intersection(t) 
sti = s & t


#----------------- 对称差(非交集元素): {1, 3}
s = {1, 2}
t = {2, 3}

# 交集元素
#s.symmetric_difference_update(t)
#s ^= t

# 返回非交集元素
sty = s.symmetric_difference(t)
sty = s ^ t


#----------------- 差集: {1}
# 在 s 中,但不在 t 中的元素
s.difference_update(t)
s -= t

# 返回在 s 中,但不在 t 中的元素
std = s.difference(t)
std = s - t


#----------------- 判断
s = {1, 2}
t = {2, 3}

# s 与 t 是否没有交集
s.isdisjoint(t)

# s 是否是 t 的子集
s.issubset(t)
s <= t
s < t

# s 是否是 t 的父集
s.issuperset(t)
s >= t
s > t

迭代集合

s = set(range(5))

for value in s:
    print(value)

– 更多参见:Python 精萃
– 声 明:转载请注明出处
– Last Updated on 2018-09-08
– Written by ShangBo on 2018-08-19
– End

猜你喜欢

转载自blog.csdn.net/shangboerds/article/details/81840901