6-python基础学习-数据结构-元组tuple&集合set的常用操作(获取差集、子集,并集)

修订日期 内容
2021-2-7 初稿

元组 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'}

Guess you like

Origin blog.csdn.net/weixin_48470176/article/details/113747934