python中的集合详解

news2024/9/20 9:36:49

目录

一.思考

二.集合

基本语法

 集合的常用操作——修改

1.添加新元素

 2.移除元素

 3.从集合中随机取出元素

 4.清空集合

5. 消除两个集合的差集

 6.两个集合的合并

注意:集合的遍历

三.集合总结


 

一.思考

 为什么使用集合?

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

通过特性来分析:

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

大家,有没有看出一些局限?

局限就在于:它们都支持重复元素。
如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。

而集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序

二.集合

基本语法

 和列表、元组、字符串等定义基本相同:

  • 列表使用:[ ]
  • 元祖使用:( )
  • 字符串使用:" "
  • 集合使用:{ }

演示

my_set = {"你好","世界","程序设计"}
my_set1 =set()  #定义空集合
my_set2 = {"你好世界,程序设计"}
my_set3 = {"d","d","b","a"}
my_set4 = {"a","c","c","d"}


print(f"my_set的内容是{my_set},它的类型是{type(my_set)}")
print(f"my_set1的内容是{my_set1},它的类型是{type(my_set1)}")
print(f"my_set2的内容是{my_set2},它的类型是{type(my_set2)}")
print(f"my_set3的内容是{my_set3},它的类型是{type(my_set3)}")
print(f"my_set4的内容是{my_set4},它的类型是{type(my_set4)}")
#由结果可知最后输出的集合是无序、不重复的

结果是

 由结果可知最后输出的集合是无序、不重复的

set里面的元素可以是列表、元组、range对象等。另外,也可以是字符串,如果字符串,返回值将是包含全部不重复字符的集合。

my_set2 = {"你好世界,程序设计"}
my_set = set("你好世界,程序设计")
my_set1 = set([1,2.3,4,5.325,3])

print(f"my_set的内容是{my_set},它的类型是{type(my_set)}")
print(f"my_set2的内容是{my_set2},它的类型是{type(my_set2)}")
print(f"my_set1的内容是{my_set1},它的类型是{type(my_set1)}")

结果是

 集合的常用操作——修改

首先,因为集合是无序的,所以集合不支持:下标索引访问
但是集合和列表一样,是允许修改的,所以我们来看看集合的修改方法。

  • 添加新元素
  • 移除元素
  • 从集合中随机取出元素
  • 清空集合
  • 消除两个集合的差集
  • 两个集合合并
  • 统计集合元素数量len( )

1.添加新元素

语法:集合.add(元素)。将指定元素,添加到集合内
结果:集合本身被修改,添加了新元素

 2.移除元素

语法:集合.remove(元素),将指定元素,从集合内移除
结果:集合本身被修改,移除了元素

 3.从集合中随机取出元素

语法:集合.pop(),功能,从集合中随机取出一个元素
结果:会得到一个元素的结果。同时集合本身被修改,元素被移除

 4.清空集合

语法:集合.clear(),功能,清空集合
结果:集合本身被清空

5. 消除两个集合的差集

语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。
结果:集合1被修改,集合2不变

演示 

t1 = {"1","2","4"}
t2 = {"2","4","5"}
t1.difference_update(t2)
print(t1)
print(t2)

 6.两个集合的合并

语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
结果:得到新集合,集合1和集合2不变

 演示

注意:集合的遍历

集合不支持下标索引,不能用while循环但是可以用for循环

演示

三.集合总结

 经过上述对集合的学习,可以总结出集合有如下特点:

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

 

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

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

相关文章

php后端+JQuery+Ajax简单表单提交

通过ajax,如果从后端直接想前端返回数组,那前端收到的是一个‘Array’的字符串。所以,我比较习惯的是用json对象的格式。由后端通过json_encode()函数,把数组封装成对象,传递到前端;前端也以json的格式接收。这里用提交表单来举例说明。 页面显示如下: JQueryAjax.…

Kafka服务端参数配置

$KAFKA_HOME/config/server.properties文件中的配置 1、zookeeper.connect 该参数用于配置Kafka要连接的Zookeeper/集群的地址。它的值是一个字符串,使用逗号分隔Zookeeper的多个地址。Zookeeper的单个地址是host:port形式的,可以在最后添加Kafka在Zoo…

idea+docker+jenkins+git构建自动化部署java项目

ideadockerjenkinsgit构建自动化部署java项目 默认jenkins已经 安装jdk 9 和maven 3.5 用于 执行pom.xml 打包构建镜像 [rootECS40833040 ~]# mkdir -p /usr/local/jenkins [rootECS40833040 jenkins]# vim jenkins.sh #!/usr/bin/env bash app_name005-springboot docker …

2、JSP——配置Tomcat服务器

目录 1、下载Tomcat服务器 2、Tomcat服务器的安装 3、Tomcat的目录结构 4、配置Tomcat运行环境 4.1 右击此电脑--->属性--->高级系统设置--->环境变量 4.2 在系统变量(s)中新建--->CATALINA_HOME--->变量值为Tomcat压缩文件解压后的地址 4.3 在系统变量(s…

[附源码]计算机毕业设计线上评分分享平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

C语言 动态内存管理

C语言 动态内存管理引言C/C程序的内存开辟声明一、动态内存管理函数1. malloc 和 free使用示例2. calloc使用示例3. realloc使用示例4. 注意事项二、动态内存管理函数使用时的错误示范程序清单1程序清单2程序清单3程序清单4程序清单5程序清单6三、经典的内存笔试题程序清单1程序…

【可转债,股票】低频量化数据

目录历史文章股票明日涨停预测指数60日线偏离数据上证指数 MA60偏离度深证成指 MA60偏离度创业板指 MA60偏离度中小100 MA60偏离度上证50 MA60偏离度沪深300 MA60偏离度中证500 MA60偏离度中证1000 MA60偏离度科创50 MA60偏离度恒生科技 MA60偏离度恒生科技指数 MA60偏离度可转…

【强化学习论文合集 | 2018年合集】二. AAAI-2018 强化学习论文

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

Pytorch2.0发布了,向下兼容,加一句代码,性能翻番

概述 介绍PyTorch 2.0,我们迈向PyTorch下一代2系列发行版的第一步。在过去的几年里,我们进行了创新和迭代,从PyTorch 1.0到最近的1.13,并转移到新成立的PyTorch基金会,它是Linux基金会的一部分。 除了我们令人惊叹的…

Python中的全局变量与命名法

--------------------------------------------------------------------------------------------------------------------------------- 在本文章中,我们来讨论一下python中的全局变量,我们将学习如何定义全局变量,然后如何在函数中访问它…

HTML静态网页作业——澳门英文旅游网站设计与实现HTML+CSS+JavaScript

👨‍🎓学生HTML静态网页基础水平制作👩‍🎓,页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码,这是一个不错的旅游网页制作,画面精明,排版整洁,内容…

在windows server 2016安装Web服务器(IIS)

无论是用.NET开发网站和Web服务,都需要发布于Web服务器(IIS)上,以下记录在windows server 2016 标准版上安装Web服务器(IIS)的过程。 1.打开服务器管理器,选择“添加角色和功能” 2.确认管理员帐户为强密码…

[附源码]计算机毕业设计基于springboot的汽车租赁系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Android S(31) PMS 服务启动原理

1、PMS 启动 SystemServer进程启动引导服务时启动PMS,方法调用SystemServer.run()-startBootstrapServices,通过 PackageManagerService.main中 new PackageManagerService()实例化PackageManagerService对象。 PMS 的主要作用是解析 system/和 data/ 目录下的apk…

讲讲我是如何一步步成为CSDN博客专家的心路历程

大家好,给大家先做个自我介绍 我是码上代码,大家可以叫我码哥 我也是一个普通本科毕业的最普通学生,我相信大部分程序员或者想从事程序员行业的都是普通家庭的孩子,所以我也是靠自己的努力,从毕业入职到一家传统企业&a…

pytorch 学习第三天 交叉熵

交叉熵 信息量 假设X是一个离散型随机变量,其取值集合为X,概率分布函数为p(x)Pr(Xx),x∈X 我们定义事件Xx0的信息量为:I(x0)−log(p(x0)),可以理解为,一个事件发生的概率越大,则它所携带的信息量就越小&a…

计算机网络(自顶向下)—第四章测验题

“计算机网络”第四章测验题 一个 B 类网络 128.16.0.0/16 被网络管理员划分为 16 个大小相同的子网,则子网掩码为255.255.240.0。如果按照 IP 地址从小到大对子网进行编号,写出第2 个子网的地址范围,用 a.b.c.d/x 的形式表示128.16.16.0/20。…

阿里最新产,SpringCloud 微服务核心技术全解手册 Github 星标 50k

SpringCloud 想必每一位 Java 程序员都不会陌生,很多人一度把他称之为“微服务全家桶”,它通过简单的注解,就能快速地架构微服务,这也是 SpringCloud 的最大优势。但是最近有去面试过的朋友就会发现,现在面试你要是没有…

C语言第十七课:初阶指针

目录 前言: 一、指针是什么: 1.那么指针到底是什么呢? 2.内存中的数据存储原理: 3.数据存储与指针使用实例: 4.存储编址原理: 二、指针和指针类型: 1.决定了指针的步长: 2.决定了…

[附源码]计算机毕业设计基于Springboot的项目管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…