当前位置: 首页 > news >正文

Python集合(set)操作:构建复杂结构的实用技巧III

在 Python 中,集合(set)是一个无序的、不包含重复元素的容器。集合通常用于以下场景:

  1. 成员资格测试:快速检查某个元素是否存在于集合中。
  2. 去除重复项:从数据中移除重复的元素。
  3. 集合运算:执行数学上的集合运算,如并集、交集、差集和对称差分。

集合的特性:

  • 无序性:集合中的元素不保持任何特定的顺序。
  • 唯一性:集合中的所有元素都是唯一的,不允许重复。
  • 可变性:集合是可变的,可以添加或删除元素。
  • 迭代性:可以迭代集合中的元素。

集合的基本操作:

  • 创建集合

    my_set = {1, 2, 3}
    my_set = set([1, 2, 3])  # 从列表创建集合
    
  • 添加元素

    my_set.add(4)
    
  • 删除元素

    my_set.remove(2)  # 移除元素 2
    my_set.discard(3) # 移除元素 3,如果元素不存在,不会引发错误
    
  • 集合运算

    • 并集(Union):
      a = {1, 2, 3}
      b = {3, 4, 5}
      union_set = a.union(b)  # 或者 a | b
      
    • 交集(Intersection):
      intersection_set = a.intersection(b)  # 或者 a & b
      
    • 差集(Difference):
      difference_set = a.difference(b)  # 或者 a - b
      
    • 对称差分(Symmetric Difference):
      symmetric_difference_set = a.symmetric_difference(b)  # 或者 a ^ b
      
  • 测试成员资格

    if 2 in my_set:print("2 is in the set")
    
  • 转换为列表或元组

    list_set = list(my_set)
    tuple_set = tuple(my_set)
    

何时使用集合:

  • 数据去重:当你需要从一组数据中移除重复项时。
  • 集合运算:当你需要执行数学上的集合运算时。
  • 快速查找:集合提供了非常快速的成员资格测试。
  • 无序集合:当你不需要保持元素顺序时。
  • 集合比较:当你需要比较两个集合的包含关系时。

示例:

# 去除列表中的重复元素
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_items = set(my_list)
print(unique_items)  # 输出: {1, 2, 3, 4, 5}# 成员资格测试
my_set = {1, 2, 3}
if 2 in my_set:print("2 is in the set")  # 输出: 2 is in the set# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a.union(b))  # 输出: {1, 2, 3, 4, 5}
print(a.intersection(b))  # 输出: {3}
print(a.difference(b))  # 输出: {1, 2}
print(a.symmetric_difference(b))  # 输出: {1, 2, 4, 5}

集合是 Python 中非常有用的数据结构,特别适合于需要快速成员资格测试和执行集合运算的场景。


http://www.mrgr.cn/news/16097.html

相关文章:

  • Python知识点:如何使用Robot Framework进行自动化测试框架搭建
  • 小程序组件生命周期和获取组件实例
  • 火语言RPA流程组件介绍--浏览选择文件
  • 感染了后缀为.Wormhole勒索病毒如何应对?数据能够恢复吗?
  • 【吊打面试官系列-Redis面试题】Redis 是单进程单线程的?
  • 大数据查询优化之谓词下推 ?
  • BugKu练习记录:ok
  • NCNN入门之编译与安装
  • java虚拟机知识分享与汇总
  • 【Hexo系列】【6】NexT主题使用
  • java程序CUP持续飙高
  • 视觉辅助应用场景
  • RocketMQ学习(二)
  • 【JavaSE系列】Java概述
  • WebStorm 安装教程及免费使用或试用的方法
  • 【MySQL】用户管理
  • C++的基准测试
  • 基于Python的机器学习系列(17):梯度提升回归(Gradient Boosting Regression)
  • 如何构建基于Java SpringBoot的医疗器械管理系统?四步详解从需求分析到系统部署,集成Vue.js提升用户体验,内含MySQL数据库管理技巧。
  • 基于STM32开发的智能电力监控与管理系统