美文网首页Python基础python
Python容器-4·set集合

Python容器-4·set集合

作者: 技术老男孩 | 来源:发表于2023-01-02 09:38 被阅读0次

一、集合的定义 set:

  • 集合与元组和列表相似都用于做容器,在内部可以放一些子元素
  • 集合有三特殊特点: 子元素不重复子元素必须可哈希无序

二、集合类型操作符

  • 集合支持用 in 和 not in 操作符检查成员
  • 能够通过 len() 检查集合大小
  • 能够使用 for 迭代集合成员
  • 不能取切片,没有键

三、使用场景:

  • 去重操作
  • 集合间的运算

四、常用方法(功能:增删、交集并集差集)

序号 分类 关键字 / 函数 / 方法 说明
1 添加 集合.add(value) 添加元素value
2 删除 集合.remove(value) 删除元素value,如果元素不是成员,则引发 KeyError。
3 交集 集合A & 集合B 取2个集合的交集,相当于共同好友
集合A.intersection(集合B) 取2个集合的交集
4 并集 集合A | 集合B 取2个集合合并的内容,相当于家族合并
集合A.union(集合B) 取2个集合合并的内容
5 差集 集合A - 集合B 取2个集合的差集,集合A有的,集合B没有
集合B - 集合A 取2个集合的差集,集合B有的,集合A没有
集合A.difference(集合B) 取2个集合的差集
集合B.difference(集合A) 取2个集合的差集

五、案例(比较文件内容):

  • 有两个文件:a.log 和 b.log
  • 两个文件中有大量重复内容
  • 取出只有在 b.log 中存在的行
# 获取文件内容,并转换成集合
def get_set(file_name):
    with open("/tmp/" + file_name, mode="r") as fr:
        return set(fr.readlines())

if __name__ == '__main__':
    set01 = get_set("a.log")
    set02 = get_set("b.log")

    print(set01, set02, sep="\n")
    print("交集", set02.intersection(set01))
    print("并集", set02.union(set01))
    print("差集", set02.difference(set01))

    print("交集", set02 & set01)
    print("并集", set02 | set01)
    print("差集", set02 - set01)

相关文章

网友评论

    本文标题:Python容器-4·set集合

    本文链接:https://www.haomeiwen.com/subject/bkuyqdtx.html