Python数据容器(集合)

news2024/11/20 4:29:34

集合

    • 1.集合的定义
    • 2.集合中常用操作
    • 4.常用功能总结
    • 5.集合的特点
    • 6.练习

思考?
我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。为何要学新的集合类型呢?
通过特性分析

  • 列表可以修改、支持重复元素且有序
  • 元组、字符串不可修改、支持重复元素且有序

存在局限性

  • 它们都支持重复元素

如果场景需要对内容做去重处理,列表、元素、字符出就不方便。而集合,最主要的特点就是:不支持元素的重复(自带去重)、并且内容无序

1.集合的定义

1.基本语法

# 定义集合字面量
{元素,元素,...,元素}
# 定义结合变量
变量名称 = {元素,元素,...,元素}
# 定义空集合
变量名称 = set()

示例

names = {'python','itheima','程序员','python'}
print(names)
##输出 {'itcast', '程序员', 'python', 'itheima'}

结果中可见去重且无序

2.集合中常用操作

集合是无序的,所以集合不支持下标索引

  • 添加新元素
    • 语法:集合.add(元素),将指定元素添加道集合中去
    • 结果:集合本身被修改,添加了新元素
my_set = {'Hello','World'}
my_set.add('itheima')
print(my_set) # 结果 {'World', 'Hello', 'itheima'}
  • 移除元素
    • 语法:集合.remove(元素),将指定元素,从集合内移除
    • 结果:集合本身被修改,移除了元素
my_set = {'World', 'Hello', 'itheima'}
my_set.remove('itheima')
print(my_set) # 结果 {'World', 'Hello'}
  • 从集合中随机取出元素
    • 语法:集合.pop(),从集合中随机取出一个元素
    • 结果:会得到一个元素的结果。同时集合本身会被修改,元素被移除
my_set = {'World', 'Hello', 'itheima'}
element = my_set.pop()
print(my_set)  # 结果 {'Hello', 'World'}
print(element) # 结果 itheima
  • 清空集合
    • 语法:集合.clear()
    • 功能:清空集合
    • 结果:集合本身被掏空
my_set = {'World', 'Hello', 'itheima'}
my_set.clear()
print(my_set)  # 结果 set()
  • 取出2个集合的差集
    • 语法:集合1.difference(集合2)
    • 功能:取出集合1和集合2的差集(集合1有而集合2没有的)
    • 结果:得到一个新集合,集合1和集合2不变
set1 = {1,2,3}
set2 = {1,5,6}
set3 = set1.difference(set2)
print(set3)  # 结果: {2,3} 得到新的集合
print(set2)  # 结果:{1,5,6} 不变
print(set1)  # 结果:{1,2,3} 不变
  • 消除两个集合的差集
    • 语法:集合1.difference_update(集合2)
    • 功能:对比集合1和集合2,在集合1内,删除集合2相同的元素
set1 = {1,2,3}
set2 = {1,5,6}
set1.difference_update(set2)
print(set1)  # 结果:{2,3} 
print(set2)  # 结果:{1,5,6} 不变
  • 2个集合合并
    • 语法:集合1.union(集合2)
    • 功能:将集合1和集合2组成新的集合
    • 结果:得到新集合,集合1和集合2保持不变
set1 = {1,2,3}
set2 = {1,5,6}
set3 = set1.union(set2)
print(set3)  # 结果:{1,2,3,5,6} 新集合
print(set1)  # 结果:{1,2,3} 不变
print(set2)  # 结果:{1,5,6} 不变
  • 查看集合的元素数量
    • 语法:len(集合)
    • 功能:统计集合内又多少元素
    • 结果:得到一个整数结果
set = {1,2,3}
print(len(set)) # 结果 3

3.集合的遍历
注意:集合不支持下标索引,所以也就不支持使用while循环

  • 支持for循环
set = {1,2,3}
for i in set:
    print(i) # 结果 1 2 3

4.常用功能总结

编号操作说明
1集合.add(元素)集合内添加一个元素
2集合.remove(元素)集合内删除指定的元素
3集合.pop()从集合中随机取出一个元素
4集合.clear()将集合清空
5集合1.difference(集合2)得到一个辛几何,内含2个集合的差集,原有的2个集合内容不变
6集合1.difference_update(集合2)在集合1中,删除集合2中存在的元素,集合1被修改,集合2不变
7集合1.union(集合2)得到1个新集合,内含2个集合的全部元素,原有的2个集合内容不变
8len(集合)得到一个整数,记录了集合的元素数量

5.集合的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标索引)
  • 不允许重复数据存在
  • 可以修改(增加或删除元素)
  • 支持for循环

6.练习

在这里插入图片描述

my_list = ['黑马程序员', '传智播客', '黑马程序员', '传智播客', 'itheima', 'itcast', 'itheima', 'itcast', 'best']
# 定义一个空集合
my_set = set()
# 通过for循环遍历列表
# 在for循环中将列表的元素添加至集合
for i in my_list:
    my_set.add(i)
# 最终得到元素去重后的集合对象,并打印输出
print(f"有列表{my_list}")
print(f"存入集合结果:{my_set}")
### 输出
有列表['黑马程序员', '传智播客', '黑马程序员', '传智播客', 'itheima', 'itcast', 'itheima', 'itcast', 'best']
存入集合结果:{'黑马程序员', 'best', '传智播客', 'itcast', 'itheima'}

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

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

相关文章

Scala---方法与函数

一、Scala方法的定义 有参方法&无参方法 def fun (a: Int , b: Int) : Unit {println(ab) } fun(1,1)def fun1 (a: Int , b: Int) ab println(fun1(1,2)) 注意点: 方法定义语法 用def来定义可以定义传入的参数,要指定传入参数的类型方法可以写返…

【Java】线程的调度、生命周期及状态转换

🌺个人主页:Dawn黎明开始 🎀系列专栏:Java ⭐每日一句:夜色难免黑凉,前行必有曙光 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️ ​ 文章目录 一.&…

3.1 Linux 前置知识

1、硬件 我们知道,组成计算机的硬件主要有“主机”和“输入/输出设备”。 主机包括机箱、电源、主板、CPU(Central Processing Unit,中央处理器)、内存、显卡、声卡、网卡、 硬盘、光驱等。输入/输出设备包括显示器、键盘、鼠标…

王道数据结构课后代码题p40 6.有一个带头结点的单链表L,设计一个算法使其元素递增有序 (c语言代码实现)

这一题其实用到了直接插入排序的思想 视频讲解在这里哦:👇 p40 第6题 王道数据结构课后代码题 c语言代码实现_哔哩哔哩_bilibili 本题代码为 void paixu(linklist* L)//对单链表内的元素排序 {lnode* p (*L)->next;lnode* pre *L;lnode* r p-&…

「 电商API接口系列之淘宝API接口调用 」

API从技术角度来说就是应用程序编程接口。通过API我们可以直接获取一些我们需要的数据结果,而不需要自己编写相应的程序,有点类似模块化调用函数,大大加快了我们编程的速度。当然这个数据传输是需要网络的,所以一般API的形式看起来…

论文十问:ResNet(Deep Residual Learning for Image Recognition)

文章目录 1. 论文试图解决什么问题?2. 这是否是一个新的问题?3. 这篇文章要验证一个什么科学假设?4. 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?5. 论文中提到的解决方案之关键是什么?6. 论文中的实验是如何设计的?…

stable diffusion comfyui的api使用教程

一、为什么要使用comfyui的api?对比webui的api,它有什么好处? 1、自带队列 2、支持websocket 3、无需关心插件是否有开放api接口,只要插件在浏览器中可以正常使用,接口就一定可以使用 4、开发人员只需关心绘图流程的搭建 5、切换…

【LeetCode刷题笔记】二叉树(二)

257. 二叉树的所有路径 解题思路: 1. DFS 前序遍历 ,每次递归将 当前节点的拼接结果 传递到 下一层 中,如果当前节点是 叶子节点 ,就将 当前拼接结果 收集答案并返回。 注意:路径path结果可以使用 String 来拼接,这样可以避免回溯处理。

Git 本地库基本教程

目录 一. Git 概述 1.1 何为版本控制 1.2 为什么需要版本控制 1.3 版本控制工具 1.3.1 集中式版本控制工具 1.3.2 分布式版本控制系统 1.4 Git简介 1.5 Git工作机制 1.6 Git 和代码托管中心 1.6.1 局域网 1.6.2 互联网 二. Git 安装 三. Git…

SystemC 学习之与 System Verilog 的混合仿真(九)

1、下载 uvmc (uvm connect) https://download.csdn.net/download/yp18792574062/88529417?spm1001.2014.3001.5501 2、配置相关环境变量 export UVM_HOME${VCS_HOME}/etc/uvm export UVMC_HOME/home/yangpan/yangpan/uvmc/uvmc-2.3.1 然后执行 source ~/.zshrc 更新 3、…

让公有云服务“宁安如梦”的“定心丸”在哪里?

电视剧《宁安如梦》正在热播中,该剧讲述了主人公在经历人生的重大风险后,重获新生再活一遍,以确定性的方式抵御和化解原有的重大风险。然而,在现实的生活中,却没有这样的重来机会。 2023年11月13日,Gartne…

二、服务拆分及远程调用

目录 一、注意事项: 1.单一职责: 2.数据独立: 3.面向服务: 二、服务拆分例子: 三、远程调用例子: 微服务调用方式: 四、提供者与消费者 服务调用关系: 一、注意事项: 1.单一职责: 不同…

某建筑网页js逆向分析过程(有坑)

某建筑网页: 网站: import base64 # 解码 website base64.b64decode(aHR0cHM6Ly9qenNjLm1vaHVyZC5nb3YuY24vZGF0YS9jb21wYW55.encode(utf-8)) print(website)JSON.parse() ​ 当你有一个包含JSON字符串的变量时,你可以使用JSON.parse()将…

No209.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

19 - 如何用协程来优化多线程业务?

近几年,国内很多互联网公司开始使用或转型 Go 语言,其中一个很重要的原因就是 Go 语言优越的性能表现,而这个优势与 Go 实现的轻量级线程 Goroutines(协程 Coroutine)不无关系。那么 Go 协程的实现与 Java 线程的实现有…

高效免费办公神器——ONLYOFFICE入手指南

前言: 作为开发者,有时候经常为寻找适合的开发工具而苦恼;或者因为高昂的费用而犹豫不决;亦或喜欢的办公产品只能在单一的平台上使用,与其把时间花在复杂的工具使用上,不如节省出时间投入思考和技术的提升。…

【洛谷算法题】P5711-闰年判断【入门2分支结构】

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5711-闰年判断【入门2分支结构】🌏题目描述🌏输入格式&a…

js写轮播图,逐步完善

目录 1、自动轮播 2、点击更换 3、自动播放加左右箭头点击切换 4、完整版轮播图 1、自动轮播 用定时器setInterval()来写&#xff0c;可以实现自动播放 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><met…

一例plugx样本的分析(AcroRd32cWP)

这是一例plugx的样本&#xff0c;使用了一个合法签名的程序 &#xff0c;使用侧加载的方式加载一个恶意的dll&#xff0c;解密一个dat文件来&#xff0c;在内存中执行一个反射型dll来完成恶意功能。 这个病毒会使用摆渡的方式的来窃取内网的文档数据&#xff0c;具有严重的失泄…

Git新建分支

修改代码之Git策略思考&#xff1a; 有三种办法&#xff1a; 需要在主分支上新建一个分支&#xff0c;不合并新建版本。其实也是先新建一个分支&#xff0c;然后合并到主分支&#xff0c;再删除分支。直接新建远程仓库。 考虑&#xff0c;3&#xff09;最浪费&#xff0c;其…