深度探索Python集合:从基本操作到高级用法

在Python编程中,集合(Set)作为一种高效且功能强大的内置数据结构,常用于处理不包含重复元素的无序数据集合。本文将详述Python集合的基本操作、进阶技巧以及在实际场景中的应用。

一、集合基础

Python集合初始化可通过大括号 {} 或者 set() 函数实现,其中的元素必须是不可变类型,例如整数、浮点数、字符串或元组等。下面是一个简单的示例:

s = {1, 2, 3, 4, 4, 5}  # 初始化一个集合,自动剔除重复元素
print(s)  # 输出:{1, 2, 3, 4, 5}

二、集合操作

1. 增删操作
  • 添加元素:使用 add() 方法将单个元素添加到集合中,如果元素已存在,则不会执行任何操作。
s.add(6)
print(s)  # 输出:{1, 2, 3, 4, 5, 6}
  • 更新集合:使用 update() 方法合并其他集合或可迭代对象的元素。
s.update([7, 8, 9])
print(s)  # 输出:{1, 2, 3, 4, 5, 6, 7, 8, 9}
  • 删除元素:使用 remove() 方法删除指定元素,若元素不存在会引发 KeyError;使用 discard() 方法则不会引发异常。
s.remove(5)
print(s)  # 输出:{1, 2, 3, 4, 6, 7, 8, 9}s.discard(10)
2. 集合关系操作
  • 并集(Union):使用 | 操作符或 union() 方法合并两个集合的所有唯一元素。
a = {1, 2, 3}
b = {3, 4, 5}
union_set = a | b
print(union_set)  # 输出:{1, 2, 3, 4, 5}
  • 交集(Intersection):使用 & 操作符或 intersection() 方法找到两个集合共有的元素。
intersection_set = a & b
print(intersection_set)  # 输出:{3}
  • 差集(Difference):使用 - 操作符或 difference() 方法获取仅存在于第一个集合的元素。
difference_set = a - b
print(difference_set)  # 输出:{1, 2}
  • 对称差集(Symmetric Difference):使用 ^ 操作符或 symmetric_difference() 方法得到两个集合中互不相同的元素。
sym_diff_set = a ^ b
print(sym_diff_set)  # 输出:{1, 2, 4, 5}
3. 集合成员测试与大小判断
  • 成员资格测试:使用 innot in 关键字检查元素是否在集合内。
print(2 in s)  # 输出:True
print(10 not in s)  # 输出:True
  • 子集与超集判断:使用 <=>= 操作符检测集合之间的包含关系。
subset_check = a <= b  # False
superset_check = a >= b  # False

三、集合推导式与实际应用

集合推导式提供了一种简洁的方法创建集合:

numbers = [1, 2, 2, 3, 4, 4, 4, 5]
unique_numbers = {num for num in numbers}  # 使用集合推导式去重
print(unique_numbers)  # 输出:{1, 2, 3, 4, 5}

在实际应用中,集合因其高效的查找、去重能力,在解决众多编程问题时发挥关键作用,如数据分析中的去重计数、数据库查询优化等场景。

总结来说,深入掌握Python集合的操作与特性,不仅能提升代码效率,还能助您在处理大量数据时更加得心应手。通过对集合的灵活运用,您可以设计出更简洁、更具有表现力的代码逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue实现多个input输入,光标自动聚焦到下一个input

遇到一个需求&#xff0c;需要实现和移动端短信输入一样&#xff0c;输入内容后&#xff0c;光标会进入下一个输入框 需要用到2个事件 keydown事件发生在键盘的键被按下的时候 keyup 事件在按键被释放的时候触发 <template><div class"box"><el-fo…

(ruoyi-vue3.8.6版本基础上)升级Spring Boot 3.x时遇到的问题与解决办法

升级Spring Boot 3.x时遇到的问题与解决办法 在升级Spring Boot应用到3.x版本的过程中,可能会遇到一系列的依赖、配置及JDK版本相关问题。本文将列出几个常见问题及其对应的解决方案。 问题一:javax.xml.bind.JAXBException异常 问题描述 在更新Spring Boot依赖后,如果缺…

OpenAI重磅发布Sora——首个视频生成模型:利用文本-视频人工智能将想象变为现实

想象一下&#xff0c;现在你有一段文本话描述的故事&#xff0c;通过输入这段文本&#xff0c;就可以立刻展开一个生动详细的视频。这就是 OpenAI 神奇的 Sora&#xff0c;一个革命性的文本到视频的 AI 模型。Sora于2024年2月推出&#xff0c;凭借其仅凭文字提示就能生成现实和…

CSS 不同颜色的小圆角方块组成的旋转加载动画

<template><!-- 创建一个装载自定义旋转加载动画的容器 --><view class="spinner"><!-- 定义外部包裹容器,用于实现整体旋转动画 --><view class="outer"><!-- 定义四个内部小方块以形成十字形结构 --><view clas…

攻防演练后的一点随记

攻防演练 攻防演练算是告一段落了&#xff0c;各位红队和蓝队的兄弟们都辛苦了&#xff0c;写一点随记&#xff0c;供大家参考。 记得第一次参加攻防演练是在2018年&#xff0c;当时被派到北京&#xff0c;在某个政企单位做攻防演练支撑工作&#xff0c;然后2020年又被紧急派到…

SSE 协议详细教程

Server-Sent Events&#xff08;SSE&#xff09;是一种服务器到客户端的单向通信协议&#xff0c;它基于HTTP协议&#xff0c;允许服务器向客户端推送数据。SSE常用于实现实时更新的功能&#xff0c;例如在新闻网站或股票市场中显示最新消息。本文将详细介绍SSE协议的原理、实现…

Vue首屏优化,12个提速建议

文章目录 代码拆分和懒加载&#xff1a;代码拆分懒加载 图片优化&#xff1a;组件懒渲染&#xff1a;数据预获取和缓存&#xff1a;服务器端渲染&#xff08;SSR&#xff09;&#xff1a;代码压缩和合并&#xff1a;使用 CDN 加速&#xff1a;监控和性能分析&#xff1a;代码优…

AIGC实战——能量模型(Energy-Based Model)

AIGC实战——能量模型 0. 前言1. 能量模型1.1 模型原理1.2 MNIST 数据集1.3 能量函数 2. 使用 Langevin 动力学进行采样2.1 随机梯度 Langevin 动力学2.2 实现 Langevin 采样函数 3. 利用对比散度训练小结系列链接 0. 前言 能量模型 (Energy-based Model, EBM) 是一类常见的生…

c++开发基础之保障多线程编程中的原子操作InterlockedIncrement和InterlockedDecrement用法详解

一、介绍 在多线程编程中&#xff0c;确保对共享变量进行原子操作是至关重要的。当多个线程同时访问和修改同一共享资源时&#xff0c;如果没有合适的同步机制&#xff0c;可能会导致数据竞争、内存一致性问题&#xff0c;甚至造成程序崩溃。为了解决这个问题&#xff0c;C提供…

公众号,h5 链接直接在浏览器打开 拒绝下载视频解决方案

公众号&#xff0c;h5 链接直接在浏览器打开 拒绝下载视频 1.微信打开公众号 2.在微信上打开浏览器 3.F12打开页面 4.播放视频 5.找到video标签代码 6.去掉video标签的属性controlslist“nodownload” 7.全屏播放 8.下载

【个人博客搭建】butterfly主题配置

目录 一、基础配置 (一) 模板配置 1. 文章模板 2. 页面模板 (二) 创建页面和文章 1. 标签页【可选】 2. 分类页【可选】 3. 友链页【可选】 4. 404页面【可选】 5. 文章 (三) 导航栏设置 1. 基础项 2. 菜单项 (四) 页面设置 1. 代码框设置 2. 社交图标设置 3.…

win10下wsl2使用记录(系统迁移到D盘、配置国内源、安装conda环境、配置pip源、安装pytorch-gpu环境、安装paddle-gpu环境)

wsl2 安装好后环境测试效果如下&#xff0c;支持命令nvidia-smi&#xff0c;不支持命令nvcc&#xff0c;usr/local目录下没有cuda文件夹。 系统迁移到非C盘 wsl安装的系统默认在c盘&#xff0c;为节省c盘空间进行迁移。 1、输出wsl -l 查看要迁移的系统名称 2、执行导出命…

367.有效的完全平方数

给你一个正整数 num 。如果 num 是一个完全平方数&#xff0c;则返回 true &#xff0c;否则返回 false 。 完全平方数 是一个可以写成某个整数的平方的整数。换句话说&#xff0c;它可以写成某个整数和自身的乘积。 不能使用任何内置的库函数&#xff0c;如 sqrt 。 示例 1…

JDK8 升级至JDK19

优质博文IT-BLOG-CN 目前部分项目使用JDK8&#xff0c;部分项目使用JDK19因此&#xff0c;环境变量中还是保持JDK8&#xff0c;只需要下载JDK19免安装版本&#xff0c;通过配置IDEA就可以完成本地开发。 一、IDEA 环境设置 【1】通过快捷键CTRL SHIFT ALT S或者File->P…

如何免费访问和使用Gemini API?

Gemini是谷歌开发的一个新模型。有了Gemini可以为查询提供图像、音频和文本&#xff0c;获得几乎完美的答案。 我们在本教程中将学习Gemini API以及如何在机器上设置它。我们还将探究各种Python API函数&#xff0c;包括文本生成和图像理解。 Gemini AI模型介绍 Gemini是谷歌…

两种方法判断Python的位数是32位还是64位

Python从1991年发布以来&#xff0c;凭借其简洁、清晰、易读的语法、丰富的标准库和第三方工具&#xff0c;在Web开发、自动化测试、人工智能、图形识别、机器学习等领域发展迅猛。     Python是一种胶水语言&#xff0c;通过Cython库与C/C语言进行链接&#xff0c;通过Jytho…

[Java][算法 滑动窗口]Day 03---LeetCode 热题 100---08~09

第一题 无重复字符串的最长子串 思路 其实就是在字符串S中 找到没有重复的最长子串的长度 这道题的难点就是在于如何判断最长并且无重复 首先 最长长度 可以使用变量max记录保存 再者 判断有无重复 最简单的方法就是 暴力遍历法 即对于每次找的子串都再次寻找遍历…

《辽宁春晚》开场动画惊艳亮相,蓝海创意云渲染服务再显神通

随着2024年甲辰龙年的脚步日益临近&#xff0c;备受瞩目的《辽宁春晚》于除夕夜为全国观众带来了一场精彩绝伦的视听盛宴。作为整场晚会的亮点之一&#xff0c;开场动画以其独特的创意和精美的画面效果&#xff0c;为观众带来了一个难忘的视觉体验。而这一精彩的呈现&#xff0…

测试物理网络的ping命令

通过发送Internet控制消息协议&#xff08;ICMP&#xff09;并接收其应答&#xff0c;测试验证与另一台TCP/IP计算机的IP级联通性、可达到性和名称解析的疑难问题主要TCP/IP命令。如果不带参数&#xff0c;ping将显示帮助。通过在命令提示符下输入“ping /&#xff1f;”命令&a…

R语言课程论文-飞机失事数据可视化分析

数据来源&#xff1a;Airplane Crashes Since 1908 (kaggle.com) 代码参考&#xff1a;Exploring historic Air Plane crash data | Kaggle 数据指标及其含义 指标名 含义 Date 事故发生日期(年-月-日) Time 当地时间&#xff0c;24小时制&#xff0c;格式为hh:mm Locat…