修订日期 | 内容 |
---|---|
2021-2-7 | 初稿 |
6-python基础学习-数据结构-元组tuple&集合set的常用操作
元组 tuple
元组数据结构可以看作是列表-list结构的不可变类型,在确认不可修改的场景下优先使用tuple
初始化
# 元组数据结构
# 空元组
leve0 = ()
level = ('Java', 'Python', 2021)
print(type(level), level) # <class 'tuple'> ('Java', 'Python', 2021)
# 使用内置函数初始化
level = tuple(('Python', 'Java', 2021))
print(level) # ('Python', 'Java', 2021)
# 简写省略()
level2 = 'Java', 'Python', 2021
print(type(level2), level2) # <class 'tuple'> ('Java', 'Python', 2021)
获取、遍历
元组中的数据不能修改删除,获取值与遍历请参考列表list的方式
4-python基础学习-list列表数据结构的常用操作
集合set
集合set类似与java中的set,无序且不能有重复的元素
初始化
# set集合初始化
s = {
1, 2, 3, 4, 5, 5, -1}
print(type(s), s) # <class 'set'> {1, 2, 3, 4, 5}
s1 = set(range(5))
print(s1) # {0, 1, 2, 3, 4}
s2 = set('python')
print(type(s2), s2) # <class 'set'> {'o', 'y', 'n', 'p', 't', 'h'} 无序的,每次结果可能会不一致
# 定义空集合 {} = 空字典
s_none = set()
print(type(s_none),s_none)
集合set添加删除元素
API汇总
方法 | 描述 |
---|---|
add(elem) | 添加一个元素 |
update({elem1,elem2}) | 批量添加元素 |
remove(elem) | 单个删除指定的元素,不存在则抛出异常 |
discard(elem) | 单个删除指定的元素,不存在不会抛出异常 |
pop() | 删除任意一个的元素 |
clear() | 清空集合 |
# 集合添加元素
s = {
1, 2, 3, 4, 5, 5, -1}
# 单个添加
s.add(100)
print(s) # {1, 2, 3, 4, 5, 100, -1}
# 批量添加元素
s.update({
99,77,'B'}) # {1, 2, 3, 4, 5, 100, 99, 77, 'B', -1}
print(s)
# 集合的删除操作
# 删除指定的元素,不存在则抛出异常
s.remove(1)
print(s) # {2, 3, 4, 5, 100, 99, 77, 'B', -1}
# 删除指定的元素,不存在不抛异常
s.discard(10000)
print(s) # {2, 3, 4, 5, 100, 99, 77, 'B', -1}
# 删除任意的元素
s2 = set('python')
s2.pop()
print(s2) # {'y', 'p', 'o', 'n', 'h'} 每次删除的元素可能会不一样
# 清空元素
s2.clear()
print(s2) # set()
集合中的关系(交集、并集、子集)与值的比较
API汇总
方法 | 描述 |
---|---|
== 或 != | 判断两个集合的值是否相等(与顺序无关) |
issubset() | s1.issubset(s2) s1是否包含s2的子集 |
issuperset | 是否超集 |
isdisjoint | 是否没有交集,特别注意:False表示有交集,True表示没有交集 |
intersection或& | 获取两个集合中的交集,返回一个新的集合 |
union或| | 获取两个集合中的并集,返回一个新的集合 |
difference或- | 一个集合在另一个集合中的差集,返回一个新的集合 |
symmetric_difference | 对称差集-两个集合中所有差异元素的汇总 |
比较例子
# 集合的比较
s1 = {
1, 2, 3, 4, 5}
s2 = {
2, 5, 4, 1, 3}
print(s1 == s2) # True
print(s1 is s2) # False
# 判断子集
s = set('python')
s1 = set('thon')
print(s1.issubset(s)) # True
print(s.issubset(s1)) # False
print(s.issuperset(s1)) # True 超集
# 交集
s1 = set('lovePython')
s2 = set('loveJava')
print(s1.isdisjoint(s2)) # 是否没有交集 False ->标示有交集,【特别注意】
获取交集,并集,差集的例子
s1 = {
'A','B','C','D'}
s2 = {
'C','D','E','F'}
# 交集
s3 = s1.intersection(s2)
print(s3) # {'C', 'D'}
print(s1 & s2) # {'D', 'C'}
# 并集
print(s1.union(s2) ) # {'A', 'F', 'B', 'E', 'D', 'C'}
print(s1 | s2) # {'E', 'D', 'F', 'A', 'C', 'B'}
# 差集
print(s1.difference(s2)) # {'B', 'A'}
print(s2.difference(s1)) # {'F', 'E'}
print(s2 - s1) # {'F', 'E'}