Python之集合及序列解包
1. 集合的创建
集合无序可变序列,同一个集合内的每个元素都是唯一的,元素之间不允许重复。
# 创建一个集合赋值给变量
>>> Set = {1,2,3,4,5}
>>> Set
{1, 2, 3, 4, 5}
# 列表转换时自动去掉重复元素
>>> List = [1,1,1,1,0,0,2,2,2,2,4,4,4,4]
>>> Set = set(List)
>>> Set
{0, 1, 2, 4}
# 创建空集合
>>> Set = set()
>>> Set
set()
>>> type(Set)
<class 'set'>
集合中只能包含可哈希(不可变)的数据,而不能包括列表、字典、集合等可变类型的数据。Python 提供内置函数 hash() 来计算对象的哈希值,凡是无法计算哈希值的对象都不可作为集合的元素,也不能作为字典对象的“键”。
2. 集合操作与运算
2.1 集合元素增加与删除
# 添加元素,重复元素自动忽略
>>> Set = {1,2,3,4,5}
>>> Set.add(11)
>>> Set
{1, 2, 3, 4, 5, 11}
# 与其他集合合并,去重
>>> Set.update({99,66,1})
>>> Set
{1, 2, 3, 4, 5, 66, 99, 11}
2.2 集合运算
Python 集合支持交集、并集、差集等运算
# 并集
>>> A = {1,0}
>>> B = {1,0,2,4}
>>> A | B
{0, 1, 2, 4}
>>> A.union(B)
{0, 1, 2, 4}
# 交集
>>> A & B
{0, 1}
>>> A.intersection(B)
{0, 1}
# 差集
>>> B.difference(A)
{2, 4}
>>> B - A
{2, 4}
# 判断是否为子集
>>> B.issubset(A)
False
>>> A.issubset(B)
True
3. 序列解包
可以使用序列解包功能对多个变量同时进行赋值。
# 多个变量同时赋值
>>> x,y,z = 1,2,3
>>> x
1
>>> y
2
>>> z
3
# 使用range对象进行序列解包
>>> x,y,z = range(3)
>>> x,y,z = map(str,range(3))
>>> x
'0'
>>> y
'1'
>>> z
'2'
使用序列解包可以方便地同时遍历多个序列
>>> for i,j in zip(keys,values):
... print(i,j)
A 1
B 2
C 3
D 4