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

Python集合类型

目录

目标

版本

官方文档

集合分类

实战

创建

循环

常用方法


目标

        掌握set和frozenset两种集合的使用方法,包括:创建、交集、并集、差集等操作。


版本

        Python 3.12.0


官方文档

Set Types — set, frozenseticon-default.png?t=N7T8https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset


集合分类

官方定义

Set Types — set, frozenset
    A set object is an unordered collection of distinct hashable objects. Common uses include membership testing, removing duplicates from a sequence, and computing mathematical operations such as intersection, union, difference, and symmetric difference. (For other containers see the built-in dict, list, and tuple classes, and the collections module.)

    Like other collections, sets support x in set, len(set), and for x in set. Being an unordered collection, sets do not record element position or order of insertion. Accordingly, sets do not support indexing, slicing, or other sequence-like behavior.

    There are currently two built-in set types, set and frozenset. The set type is mutable — the contents can be changed using methods like add() and remove(). Since it is mutable, it has no hash value and cannot be used as either a dictionary key or as an element of another set. The frozenset type is immutable and hashable — its contents cannot be altered after it is created; it can therefore be used as a dictionary key or as an element of another set.

    Non-empty sets (not frozensets) can be created by placing a comma-separated list of elements within braces, for example: {'jack', 'sjoerd'}, in addition to the set constructor.

译文

  1. 集合对象是无序的,因此集合不记录元素的插入位置或顺序,因此集合不支持索引、切片或其他类似序列对象的方法。
  2. 目前有两种内置的集合类型,分别是 set 和 frozenset。
  3. set是可变的,内容可以通过add()和remove()等方法进行更改。由于它是可变的,它没有哈希值,因此不能用作字典键或另一个集合的元素。
  4. frozenset是不可变的,其内容在创建后不能更改;因此可以用作字典键或另一个集合的元素。
  5. 集合用大括号或构造方法创建,用逗号分隔元素。

补充

        setfrozenset内的元素不可以重复


实战

frozenset和set的操作基本一致(构造方法名不同、frozenset不能增删元素而set能增删元素),因此这里只例举set类型的使用方法。

创建

官方文档

class set([iterable])
class frozenset([iterable])
    Return a new set or frozenset object whose elements are taken from iterable. The elements of a set must be hashable. To represent sets of sets, the inner sets must be frozenset objects. If iterable is not specified, a new empty set is returned.

    Sets can be created by several means:

    Use a comma-separated list of elements within braces: {'jack', 'sjoerd'}

    Use a set comprehension: {c for c in 'abracadabra' if c not in 'abc'}

    Use the type constructor: set(), set('foobar'), set(['a', 'b', 'foo'])

译文

  1. 集合的元素来自可迭代对象。如果未指定可迭代对象,则返回一个新的空集合。
  2. 集合的元素必须是可哈希的。
  3. 集合嵌套集合,内部的集合必须是frozenset。

集合的创建方法:

  1. 用大括号创建,元素用逗号分隔。
  2. 用集合推导式创建。
  3. 用set构造方法创建。

用大括号创建,元素用逗号分隔。

mySet={"a","b","c"}
#输出:<class 'set'>
print(type(mySet))
#输出:{'b', 'c', 'a'}
print(mySet)

用集合推导式创建。

mySet={c for c in '1231231234545' if c not in '123'}
#输出:<class 'set'>
print(type(mySet))
#输出:{'4', '5'}
#分析:拆分字符串,将每个字符作为集合的元素,条件是元素不能为:1、2、3
print(mySet)

用set构造方法创建。

方法一(用list创建set)

mySet= set([1, 2, 3, 3, 4, 4, 5,False,True,None,None,"1"])
#输出:{False, 1, 2, 3, 4, 5, None, '1'}
print(mySet)

方法二(用tuple创建set)

mySet= set((1, 2, 3, 3, 4, 4, 5,False,True,None,None,"1"))
#输出:{False, 1, 2, 3, 4, 5, None, '1'}
print(mySet)

方法三(用字符串创建set)

mySet= set("1234567890123")
#输出:{'3', '0', '9', '6', '2', '8', '1', '4', '5', '7'}
print(mySet)

方法四(根据文件对象创建set)

# 我桌面有个a.txt文件
with open('C://Users//20203//Desktop//a.txt', 'r') as file:mySet = set(file.readlines())
# 输出:{'2\n', '4\n', '3\n', '1\n', 'True', 'False\n'}
print(mySet)# 去掉\n
with open('C://Users//20203//Desktop//a.txt', 'r') as file:mySet = set(line.strip() for line in file.readlines())
print(mySet)

方法五(根据迭代器对象创建set)

myIter=iter([1,2,3,False,True,"Hello World."])
mySet=set(myIter)
#输出:<class 'set'>
print(type(mySet))
#输出:{False, 1, 2, 3, 'Hello World.'}
print(mySet)

循环

方法一(for循环)

mySet={1,2,3,4,5}
for value in mySet:print(value)

方法二(enumerate() 函数)

mySet={1,2,3,4,5}
for index,value in enumerate(mySet):print(index,value)

方法三(while循环)

mySet = {1, 2, 3, 4, 5}
#使用while循环遍历集合
iterator = iter(mySet)
while True:try:element = next(iterator)print(element)except StopIteration:break

常用方法

元素个数

mySet = {123, 2, 3, 4, 5}
print(len(mySet))

集合是否包含元素

mySet = {123, 2, 3, 4, 5}
#输出:True
print(2 in mySet)

集合是否不包含元素

mySet = {123, 2, 3, 4, 5}
#输出:True
print(2 not in mySet)

交集

mySet={123, 2, 3, 4, 5}
yourSet={123, 2, 3, 4, 5,6,7}
#交集
otherSet = mySet & yourSet
#输出:{2, 3, 4, 5, 123}
print( otherSet )

并集

mySet={123, 2, 3, 4, 5}
yourSet={123, 2, 3, 4, 5,6,7}
#交集
otherSet = mySet | yourSet
#输出:{2, 3, 4, 5, 6, 7, 123}
print( otherSet )

差集

mySet={123, 2, 3, 4, 5}
yourSet={123, 2, 3, 4, 5,6,7}
#差集
otherSet = yourSet - mySet
#输出:{6, 7}
print( otherSet )

对称差集

mySet={123, 2, 3, 4, 5,9}
yourSet={123, 2, 3, 4, 5,6,7}
#对称差集
otherSet = mySet ^ yourSet
#输出:{6, 7, 9}
print( otherSet )

集合嵌套集合

mySet = {frozenset(["a","b"]),frozenset(["c","d"]) }
#输出:<class 'frozenset'>
print(type(frozenset(["a"])))
for inner_set in mySet:print("--------")for element in inner_set:print(element)

添加元素

mySet={1, 2, 3, 4, 5}
mySet.add(6)
#输出:{1, 2, 3, 4, 5, 6}
print(mySet)

删除元素

mySet={1, 2, 3, 4, 5}
mySet.remove(1)
#输出:{2, 3, 4, 5}
print(mySet)

是否没有共同元素

mySet = {1, 2, 3, 4, 5}
yourSet = {1, 2, 3}
# 输出:False
# 分析:有共同元素:1,2,3
print(mySet.isdisjoint(yourSet))mySet = {4, 5}
yourSet = {1, 2, 3}
# 输出:True
# 分析:没有共同元素
print(mySet.isdisjoint(yourSet))

是否是子集关系

mySet = {1, 2, 3, 4, 5}
yourSet = {1, 2, 3}
# 输出:False
# 分析:mySet不是yourSet的子集
print(mySet.issubset(yourSet))
# 输出:True
# 分析:yourSet是mySet的子集
print(yourSet.issubset(mySet))

是否是超集关系

mySet = {1, 2, 3, 4, 5}
yourSet = {1, 2, 3}
# 输出:True
# 分析:mySet是yourSet的超集
print(mySet.issuperset(yourSet))
# 输出:False
# 分析:yourSet不是mySet的超集
print(yourSet.issuperset(mySet))

相关文章:

Python集合类型

目录 目标 版本 官方文档 集合分类 实战 创建 循环 常用方法 目标 掌握set和frozenset两种集合的使用方法&#xff0c;包括&#xff1a;创建、交集、并集、差集等操作。 版本 Python 3.12.0 官方文档 Set Types — set, frozensethttps://docs.python.org/3/library/s…...

npm install报错常用解题思路

最近刚接手一个“新”项目&#xff0c;让我很无语。明明是去年起的项目&#xff0c;但是它所用的部分技术栈非常旧&#xff0c;我启动项目&#xff0c;控制台一堆warning报错&#xff0c;然后项目结构也很让我不适应&#xff0c;很多地方都可以用文件夹包一下来方便定位。哎&am…...

conda: error: argument COMMAND: invalid choice

简介 使用conda activate 时&#xff0c;可能会报&#xff1a;conda: error: argument COMMAND: invalid choice: ‘activate’ (choose from ‘clean’, ‘compare’, ‘config’, ‘create’, ‘info’, ‘init’, ‘install’, ‘list’, ‘notices’, ‘package’, ‘remo…...

数仓成本下降近一半,StarRocks 存算分离助力云览科技业务出海

成都云览科技有限公司倾力打造了凤凰浏览器&#xff0c;专注于为海外用户提供服务&#xff0c;公司致力于构建一个全球性的数字内容连接入口&#xff0c;为用户带来更为优质、高效、个性化的浏览体验。 作为数据驱动的高科技公司&#xff0c;从数据中挖掘价值一直是公司核心任务…...

Apache基线检查

一、确保对OS根目录禁用覆盖 当 AllowOverride 指令设置为 None 时,Apache 将禁止在该目录下使用 .htaccess 文件来覆盖任何配置项。这意味着,除非您在主配置文件中显式地指定,否则该目录下的任何 .htaccess 文件都将被忽略。 禁用 .htaccess 文件可以提高服务器的安全性,因…...

flink的集成测试

背景 日常测试中我们使用flink的TestHarness只能测试单个算子&#xff0c;很多情况下我们需要集成测试来测试真正的问题&#xff0c;所以在flink中进行集成测试还是非常有必要的&#xff0c;本文就来记录下如何在flink中进行集成测试 flink中进行集成测试 flink中进行集成测…...

gitee推荐-1Panel

以下内容来源于gitee。 gitee地址&#xff1a;1Panel: &#x1f525; &#x1f525; &#x1f525; 现代化、开源的 Linux 服务器运维管理面板。 大概和宝塔类似,但支持docker。在线体验&#xff1a;https://demo.1panel.cn/ 稍微试了下&#xff0c;没找到apache&#xff0c;…...

GEE 22:基于GEE实现物种分布模型(更新中。。。。。。)

物种分布模型 1. 数据点准备1.1 数据加载1.2 去除指定距离内的重复点1.3 定义研究区范围1.4 选择预测因子 1. 数据点准备 1.1 数据加载 首先需要将CSV文件导入到GEE平台中&#xff0c;同样也可以导入shp格式文件。 // 1.Loading and cleaning your species data *************…...

阿里云windwos 安装oracle数据库,外部用工具连接不上,只能在服务器本机通过127.0.0.1 连接

1. 首先检查阿里云服务器安全组端口是否开放 oracle 数据库端口 2. 其次找到oracle 安装的目录&#xff0c;打开这俩个文件&#xff0c;将localhost 修改为 服务器本机名称 3.重启oracle 监听服务&#xff0c;就可以连接了...

UniApp 中的 image 属性讲解

在 UniApp 中&#xff0c;image 是用于显示图片的组件&#xff0c;它具有多种属性&#xff0c;可以控制图片的展示方式和行为。下面我将为您讲解一些常用的 image 属性。 基本属性 src&#xff1a;指定要显示的图片资源路径&#xff0c;可以是本地路径或远程 URL。mode&#…...

卷积神经网络(CNN)车牌识别

文章目录 一、前言二、前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;2. 导入数据3. 查看数据3.数据可视化4.标签数字化 二、构建一个tf.data.Dataset1.预处理函数2.加载数据3.配置数据 三、搭建网络模型四、设置动态学习率五、编译六、训练八、保存和…...

弹窗concrt140.dll丢失的解决方法,深度解析concrt140.dll丢失的原因

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示或者系统崩溃的情况。其中&#xff0c;concrt140.dll是一个常见的错误提示&#xff0c;这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;本文将介绍5种详细的解决方法&#xff0c;帮助您恢…...

CANdelaStudio 使用教程4 编辑State

文章目录 简述1、State Groups2、Dependencies3、 Defaults State1、 会话状态2、 新增会话状态3、 编辑 服务对 State 的依赖关系 State Diagram 简述 1、State Groups 2、Dependencies 在这里&#xff0c;可以编辑现有服务在不同会话状态或安全访问状态的支持情况和状态转换…...

FANUC机器人到达某个点位时,为什么不显示@符号?

FANUC机器人到达某个点位时,为什么不显示@符号? 该功能由变量$MNDSP_POSCF = 0(不显示)/1(显示)/2(光标移动该行显示) 控制,该变量设置为不同的值,则启用对应的功能。 如下图所示,为该变量设置不同的值时的对比, 其他常用的系统变量可参考以下内容: 在R寄存器指定速度…...

JVM运行参数介绍 -Xms -Xmx -Xmn -Xss

文章目录 CharGPT问答Java运行参数“-Xmx2048m -Xms1024m -Xmn512m -Xss256k”如何调优jvm的运行参数 JVM相关介绍Java 虚拟机底层原理知识总结 CharGPT问答 Java运行参数“-Xmx2048m -Xms1024m -Xmn512m -Xss256k” 2023/11/26 20:30:27 这些参数是用于配置 Java 虚拟机&am…...

Hive删除符合条件的记录

Hive在使用中不支持update和delete操作&#xff0c;那么如果想删除部分条件的记录需要怎么操作&#xff1f;本文记录下解决方法。 思路&#xff1a;使用selectwhere选出想要保留的数据&#xff0c;使用insert overwrite向原表覆盖插入数据. insert overwrite table dbname.tab…...

Linux加强篇006-存储结构与管理硬盘

目录 前言 1. 从“/”开始 2. 物理设备命名规则 3. 文件系统与数据资料 4. 挂载硬件设备 5. 添加硬盘设备 6. 添加交换分区 7. 磁盘容量配额 8. VDO虚拟数据优化 9. 软硬方式链接 前言 悟已往之不谏&#xff0c;知来者之可追。实迷途其未远&#xff0c;觉今是而昨非…...

GIT版本控制和常用命令使用介绍

GIT版本控制和常用命令使用介绍 1. 版本控制1.1 历史背景1.2 什么是版本控制1.3 常见版本控制工具1.4 版本控制的分类 2 Git介绍2.1 Git 工作流程2.2 基本概念2.3 文件的四种状态2.4 忽略文件2.5 Git命令2.5.1 查看本地git配置命令2.5.2 远程库信息查看命令2.5.3 分支交互命令2…...

微服务学习|初识Docker、使用Docker、自定义镜像、DockerCompose、Docker镜像仓库

初识Docker 项目部署的问题 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题 依赖关系复杂&#xff0c;容易出现兼容性问题 开发、测试、生产环境有差异 Docker如何解决依赖的兼容问题的? 将应用的Libs (函数库)、Deps (依赖)配置与应用…...

蓝桥杯每日一题2023.11.24

题目描述 #include <stdio.h> #define N 100int connected(int* m, int p, int q) {return m[p]m[q]? 1 : 0; }void link(int* m, int p, int q) {int i;if(connected(m,p,q)) return;int pID m[p];int qID m[q];for(i0; i<N; i) ________________________________…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...