Python数据容器(集合)

集合

    • 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.hqwc.cn/news/179630.html

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

相关文章

【解决方案】危化品厂区安防系统EasyCVR+AI智能监控

危化品属于危险、易燃易爆、易中毒行类,一旦在生产运输过程中发生泄漏后果不堪想象,所以危化品的生产储存更需要严密、精细的监控,来保障危化品的安全。EasyCVRTSINGSEE青犀AI智能分析网关搭建的危化品智能监控方案就能很好的为危化品监管保驾…

错误:ERROR:torch.distributed.elastic.multiprocessing.api:failed

在多卡运行时,会出现错误(ERROR:torch.distributed.elastic.multiprocessing.api:failed),但是单卡运行并不会报错,通常在反向梯度传播时多卡梯度不同步。但我是在多卡处理数据进行tokenizer阶段报错,这竟然…

PC6404降压调整器负载大高集成低纹波800mA大电流输出

PC6406是一款由基准电压源、振荡电路、比较器、PWM/PFM 控制电路等构成的CMOS降压DC/DC调整器。利用PWM/PFM自动切换控制电路达到可调占空比,具有全输入电压范围(1.8-5.5V)内的低纹波、高效率和大输出电流等特点。PC6406内置功率M…

菜单栏图标隐藏管理Bartender 5.0.44

Bartender是一款Mac上的菜单栏图标隐藏管理软件,它可以帮助用户轻松整理和管理菜单栏上的图标,使其更加整洁和有序。 以下是Bartender的一些主要特点和功能: 菜单栏图标隐藏:Bartender允许用户将一些不常用的菜单栏图标隐藏起来&a…

Spring Cloud学习(四)【Nacos配置管理】

文章目录 统一配置管理微服务配置拉取配置热更新多环境配置共享Nacos 集群搭建Nacos集群搭建1.集群结构图2.搭建集群2.1.初始化数据库2.2.下载nacos2.3.配置Nacos2.4.启动2.5.nginx反向代理2.6.优化 统一配置管理 Nacos 可以实现注册中心和配置管理服务 在Nacos中添加配置信息…

刷题学习记录BUUCTF

[极客大挑战 2019]RCE ME1 进入环境直接就有代码 <?php error_reporting(0); if(isset($_GET[code])){$code$_GET[code];if(strlen($code)>40){die("This is too Long.");}if(preg_match("/[A-Za-z0-9]/",$code)){die("NO.");}eval($co…

Facebook游戏出海营销指南

当谈到Facebook游戏出海营销时&#xff0c;有一些关键的策略和指南可以帮助你在国际市场上取得成功。下面是一个详细的指南&#xff0c;帮助你了解如何有效地推广和推出你的游戏。 1、了解目标市场 在开始出海营销之前&#xff0c;你需要对你的目标市场进行深入的研究。了解该…

科研学习|研究方法——逻辑回归系数的显著性检验(python实现)

1. 背景 回归方程与回归系数的显著性检验 2. statsmodels 库 statsmodels库可以用来做逻辑回归、线性回归。并且会在summary中给出显著性检验的结果。最终我们想要的就是如下图的报告。 3. 计算过程 如果我们使用的sklearn构建的逻辑回归就没有办法直接输出这个报告&#xff0c…

北邮22级信通院数电:Verilog-FPGA(9)第九周实验(3)实现一个具有清零功能的按键计数器,对按键进行计数并显示

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1 counter.v 1.2 debounce.v …

自定义控件封装

上边对两个控件整合时用函数指针是因为QSpinBox::valueChange有重载版本 自定义的接口放在类外 你设计的界面可以通过提升为调用这些接口 添加qt设计师界面类

音视频封装格式:AAC音频基础和ADTS打包方案详解

现在主流的封装格式支持的音视频编码标配是H264AAC&#xff0c;其中像TS、RTP、FLV、MP4都支持音频的AAC编码方式。当然&#xff0c;后继者不乏Opus这种编码方式&#xff0c;它主要应用在互联网场景&#xff0c;比如现在谷歌的WebRTC音视频解决方案就用的Opus&#xff0c;但是A…

Poly风格模型的创建与使用_unity基础开发教程

Poly风格模型的创建与使用 安装Poly相关组件Poly模型的创建Poly模型编辑 安装Poly相关组件 打开资源包管理器Package Manager 在弹出的窗口左上角Packages选择Unity Registry 搜索框搜索 Poly 搜索结果点击Polybrush 点击右下角 Install 同时也别忘了导入一下模型示例&#…