人生苦短,我学python之数据类型(下)

news2025/1/12 10:50:43

 

个人主页:星纭-CSDN博客

系列文章专栏:Python

踏上取经路,比抵达灵山更重要!一起努力一起进步! 

目录

一.集合

1.1子集与超集

1.2交集,并集,补集,差集

1.intersection(英文:交叉)函数 

2.union(英文:联合)函数

3.difference函数

4.symmetric_difference()函数

二.bytes

 三.bytearray


一.集合

1.1子集与超集

子集和超集是集合论中的概念,用来描述一个集合是否是另一个集合的一部分。

子集:一个集合A是另一个集合B的子集,当且仅当A中的每个元素也是B中的元素。换句话说,A中的所有元素都在B中出现。用符号表示为A⊆B。

超集:一个集合B是另一个集合A的超集,当且仅当A中的每个元素也是B中的元素。换句话说,B中包括了A以外的其他元素。用符号表示为B⊇A。

举例来说,假设有集合A={1, 2, 3},集合B={1, 2, 3, 4},集合C={1, 2}。

  • A是B的子集,并且可以表示为A⊆B。因为A中的每个元素1、2、3都在B中出现。
  • B是A的超集,并且可以表示为B⊇A。因为B中包括了A以外的元素4。
  • A是C的超集,并且可以表示为A⊇C。因为A中包括了C以外的元素3。
  • C是A的子集,并且可以表示为C⊆A。因为C中的每个元素1、2都在A中出现。

在集合论中,空集合是任何集合的子集,因为空集合中没有元素,也就是说它的所有元素都属于另一个集合。

子集:如果集合S1的任何一个元素都是集合S2的元素,那么则称S1是S2的子集

超集:如果集合S1的任何一个元素都是集合S2的元素,那么则称S2是S1的超集

a = {1, 3, 5}
b = {1, 3, 5, 7}
print(a.issubset(b), b.issubset(a))  # 输出True False
print(a.issuperset(b), b.issuperset(a))  # 输出False True

a是b的子集,b是a的超集 

 a.issubset(b)用于判读a是否是b的子集,是就返回True,不是就返回False。

a.issuperset(b)用于判读a是否是b的超集,是就返回True,不是就返回False。

1.2交集,并集,补集,差集

a = {1, 2, 3, 4, 5}
b = {1, 3, 5, 7, 9}
print(a & b)  # 输出{1, 3, 5}
print(a | b)  # 输出{1, 2, 3, 4, 5, 7, 9}
print(a - b)  # 输出{2, 4}
print(a ^ b)  # 输出{2, 4, 7, 9}
  1. 操作符&求两个集合的交集
  2.             |求两个集合的并集
  3.             -求两个集合的差集
  4.             ^求两个集合的补集

根据一下图示更方便理解 

 

1.intersection(英文:交叉)函数 

这个函数的作用与intersection()函数都可以求两个集合的交集。

操作符&和intersection函数实现的功能相同,即计算集合的交集。但是它们的使用方式有一些区别:

  1. 操作符&:操作符&是Python中的一个集合操作符,用于计算两个集合的交集。可以直接使用操作符&来计算交集,例如:set1 & set2。
  2. intersection函数:intersection函数是Python中集合类的一个方法,用于计算两个集合的交集。需要将一个集合作为参数传递给另一个集合的intersection方法,例如:set1.intersection(set2)。

区别:

  • 操作符&是一个操作符,可以直接使用,比较简单直观。
  • intersection方法是一个函数,需要将一个集合作为参数传递给另一个集合的方法,代码稍微繁琐一些。

总的来说,操作符&和intersection函数的功能相同,选择使用哪种方式主要取决于个人的编码习惯和需求。

2.union(英文:联合)函数

求两个集合的并集

操作符和union函数都可以用来合并两个或多个集合,但是它们有一些区别。

  1. 使用操作符"|":比如使用set1 | set2可以将两个set集合合并成一个新的集合。这种方式会自动去除重复的元素,并且返回的结果是一个新的集合。

  2. 使用union函数:比如使用set1.union(set2)可以将两个set集合合并成一个新的集合。这种方式也会自动去除重复的元素,并且返回的结果是一个新的集合。

区别:

  • 语法不同:使用操作符"|"时,需要在两个集合之间使用操作符;而使用union函数时,需要调用集合对象的union方法。
  • 返回值不同:使用操作符"|"时,返回的是一个新的集合;而使用union函数时,返回的是一个新的集合。
  • 对原集合的影响不同:使用操作符"|"时,原集合不会发生改变;而使用union函数时,原集合不会发生改变。

总结:操作符和union函数的主要区别在于语法和返回值,但是它们都可以实现合并集合的功能。

3.difference函数

操作符 "-" 是一个二元操作符,用来计算两个数的差值。它将两个数进行减法运算,返回相减后的结果。也可以求两个集合之间的差集

而 "difference" 函数是一个集合操作函数,用于计算两个集合之间的差集。它接受两个集合作为参数,并返回一个新的集合,其中包含了第一个集合中存在而第二个集合中不存在的元素。

因此,操作符 "-" 和 "difference" 函数在功能上是有些不同的。前者用于计算数值之间的差值,也可以求差集,而后者用于计算集合之间的差集。

4.symmetric_difference()函数

操作符^和symmetric_difference函数的区别在于它们的用法和返回值。

  1. 操作符^:在集合运算中,操作符^表示对称差集(symmetric difference),即返回两个集合中不同时存在的元素组成的集合。使用操作符^可以直接对两个集合进行对称差集运算。

例子:

set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1 ^ set2
print(result)  # 输出{1, 4}
  1. symmetric_difference函数:symmetric_difference函数是集合类的一个成员函数,用于计算两个集合的对称差集。该函数接受一个集合作为参数,并返回一个新的集合。

例子:

set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1.symmetric_difference(set2)
print(result)  # 输出{1, 4}

总结:操作符^和symmetric_difference函数的功能相同,都可以用于计算两个集合的对称差集。但使用操作符^更简洁直观,而symmetric_difference函数则更灵活,可以用于任意两个集合的对称差集计算。

二.bytes

bytes是Python中的一种数据类型,它是一个不可变的字节序列。它可以存储二进制数据,如图像、音频、视频等文件,以及网络传输中的原始数据。

bytes对象由一系列的字节组成,每个字节的取值范围是0~255。bytes对象可以通过字符串、整数、字节数组等方式创建。

bytes对象与字符串对象之间可以相互转换。可以使用bytes()函数将字符串转换为bytes对象,也可以使用decode()方法将bytes对象转换为字符串。

使用bytes对象可以进行一些字节级别的操作,如截取子序列、连接、替换等。同时,bytes对象也支持一些操作符,如+、*等。

值得注意的是,bytes对象是不可变的,即不能直接修改其中的某个字节的值。如果需要修改字节,则需要先将bytes对象转换为bytearray对象,然后进行修改。

bytes对象在处理二进制数据时非常有用,特别是在网络编程和文件传输中常常会用到它。

b = b'abcdef'
print(b, type(b), len(b))  # 输出b'abcdef' <class 'bytes'> 6

 bytes表示只读的”字符串“类型。这样的类型是可以求len,切片等基本操作的

b = b'\x11\xff\x77'
print(b[0],b[1],b[2])  # 输出17 255 119

\x后面跟数字表示这个数字是十六进制的数据。比如十六进制数据11就是十进制数字17。

b = b'a'
print(b[0])  # 输出97

不同的字符在计算机中,对应着不同的数值,使用bytes这样的类型就可以将其打印出来。

 三.bytearray

bytearray是Python中的一种可变的字节数组类型。它可以存储和操作二进制数据,每个元素是一个字节(byte)。bytearray可以用于读写二进制文件、网络通信、加密等场景。

bytearray对象可以通过以下方式创建:

  1. 使用bytearray()构造函数创建一个空的bytearray对象。
  2. 使用bytearray(sequence)可以通过一个可迭代对象sequence来创建bytearray对象,其中sequence中的元素是整数,范围是0-255。
  3. 使用bytearray(size)可以创建一个指定大小为size的bytearray对象,每个元素初始化为0。
  4. 使用bytearray(string, encoding)可以将字符串string按照特定的编码(encoding)转换成bytearray对象。

bytearray对象提供了许多方法来操作二进制数据,比如添加、删除、插入、拷贝、修改等。常用的方法有:

  1. append(x):在bytearray的末尾添加一个整数x。
  2. extend(iterable):在bytearray的末尾添加一个可迭代对象中的所有元素。
  3. insert(i, x):在bytearray的指定索引位置i插入一个整数x。
  4. pop([i]):移除并返回bytearray中指定索引位置i的元素,默认是最后一个元素。
  5. remove(x):删除bytearray中第一个值为x的元素。
  6. clear():清空bytearray中的所有元素。

bytearray对象还可以进行切片、迭代、比较等操作,以及与其他二进制数据类型(bytes、memoryview)之间的转换。

总之,bytearray是一种强大的数据类型,可以方便地操作二进制数据。在处理二进制文件、网络通信、加密和解密等场景中,bytearray都是一个非常有用的工具。

b = bytearray(x for x in range(5))
print(type(b), b)  # 输出<class 'bytearray'> bytearray(b'\x00\x01\x02\x03\x04')

 bytes是可读的,bytesarray不是只读的,他是可以修改的,除此之外,两者功能类似

b = bytearray(b'abcde')
b[2] = ord('C')
print(b)  # 输出bytearray(b'abCde')

ord函数的功能是将一个字符串转化成对应的Unicode编码整数,对于英文字符来说,其Unicode编码于ASCII编码是类似的。

总结:列表(list),字符串(tuple),bytes,bytearray都可以视作序列类型,他们都可以通过下标或者索引访问其元素,也可以通过切片操作来获得序列。

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

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

相关文章

学习笔记——STM32F103V3版本——HC-05模块控制数码管

一.硬件 1.HC-05模块 2.数码管 3.连接硬件 二.在keil5中的代码 main.c代码&#xff1a; #include "stm32f10x.h" #include "buletooth.h" #include "led.h" #include "sys.h" #include "usart.h" #include "delay.…

python实用系列:按顺序重命名文件

啊&#xff0c;好久没更博客了&#xff0c;今天偶然想换个桌面壁纸&#xff0c;于是上网搜了两个比较满意的桌面壁纸&#xff0c;都是压缩包&#xff1a; 当我想要给他们放到我的桌面壁纸文件里的时候患了难&#xff0c;因为他们的名字有相同的&#xff1a; anime文件夹里边&a…

el-select可选择可搜索可输入新内容

需求&#xff1a;el-form-item添加el-select&#xff0c;并且el-select可选择可搜索可输入新内容&#xff0c;并且和其他的el-input做联动&#xff0c;如果是选择&#xff0c;那么el-input自动回填数据并且不可编辑&#xff0c;如果el-select输入新的内容&#xff0c;那么el-in…

js禁止使用浏览器的前进后退按钮的方法

效果图&#xff1a; // 替换当前页面的历史记录&#xff0c;使用户不能通过浏览器的前进后退按钮导航 history.replaceState(null, null, location.href);// 监听浏览器的历史记录变化事件 window.onpopstate function(event) {// 再次替换当前页面的历史记录&#xff0c;确保…

接口使用实例——数组排序

对于基本数据类型的大小比较&#xff0c;我们可以使用<,>,或者equals方法进行比较&#xff0c;但是对象之间如何进行比较呢&#xff1f;要对对象进行比较&#xff0c;我们必须对同一个成员变量进行比较&#xff0c;如我们可以通过比较name的大小来得出两个对象的大小&…

四万字长文详解——node.js使用移动云,EOS对象存储

目录 前言 安装及安装前的操作 前置条件 如何创建认证信息 使用npm安装SDK开发包 安装开发包命令 初始化操作 存储桶 查看结果命令 查看桶列表 查看结果命令 删除桶 查看结果命令 创建桶 获取桶列表 判断桶是否存在 查询桶所属地域 查询桶的访问权限 管理桶的…

前后端 | 低代码平台之 Erupt

前文提要 最近大家是不是都有那种危机感&#xff0c;项目变多了&#xff0c;工时压紧了&#xff0c;老板说&#xff0c;我不管你加不加班&#xff0c;我只看结果&#xff0c;项目经理说&#xff0c;我不管你用什么技术栈&#xff0c;我只要没BUG&#xff0c;测试说&#xff0c…

【算法】分治 - 快速排序

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、颜色分类二、排序数组三、数组中的第k个数四、最小的k个数总结 引言 本节主要介绍快速排序&#xf…

类图的六大关系

类图中的六大关系包括&#xff1a;继承关系、实现关系、关联关系、聚合关系、组合关系和依赖关系。 1. 继承关系 继承是一种类与类之间的关系&#xff0c;表示一种泛化和特化的关系。子类继承父类的特性和行为。 class Animal {void eat() {System.out.println("This an…

足球走地全自动化操作软件实现过程

本次采用selenium实现自动化操作的流程 打开浏览器录入账号密码等待数据请求&#xff08;监听&#xff09;有新数据&#xff0c;进行自动化操作通过homeName搜索&#xff0c;找到对应数据找到对应的类型&#xff08;让、大小…&#xff09;找到对应的盘口输入数量提交 附登录…

系统资源监控器工具glances的使用详解

目录 1、glances工具介绍 2、安装方式 3、glances的工具界面说明 4、常用的参数选项 5、常用快捷键说明 1、glances工具介绍 glances可以分析系统的 CPU使用率、内存使用率、内核统计信息和运行队列信息磁盘I/O速度、传输和读/写比率、磁盘适配器网络I/O速度、传输和读/写…

华为编程题目(实时更新)

1.大小端整数 计算机中对整型数据的表示有两种方式&#xff1a;大端序和小端序&#xff0c;大端序的高位字节在低地址&#xff0c;小端序的高位字节在高地址。例如&#xff1a;对数字 65538&#xff0c;其4字节表示的大端序内容为00 01 00 02&#xff0c;小端序内容为02 00 01…

电脑远程控制另一台电脑怎么弄?

可以远程控制另一台电脑吗&#xff1f; “你好&#xff0c;我对远程访问技术不太了解。现在&#xff0c;我希望我的朋友可以远程控制我的Windows 10电脑&#xff0c;以便她能帮我解决一些问题。请问&#xff0c;有没有免费的方法可以实现这种远程控制&#xff1f;我该如何操作…

如何选择一个最强大模型-看最硬核排名了!

Chatbot Arena由伯克利大学主导团队 LMSYS Org 发布了一个针对大语言模型的基准平台 Chatbot Arena。该平台采用匿名、随机的方式让不同的大模型产品进行对抗评测&#xff0c;基于国际象棋等竞技游戏中广泛使用的埃洛等级分系统&#xff0c;通过用户投票产生&#xff0c;系统每…

基于SpringBoot的网盘系统设计与实现

第1章 绪论... 1 1.1 研究背景与意义... 1 1.1.1 研究背景... 1 1.1.1 研究意义... 1 1.2 国内外研究现状... 2 1.2.1 国内研究现状... 2 1.2.2 国外研究现状... 3 1.3 论文组织架构... 4 第2章 关键技术介绍... 5 2.1 SpringBoot. 5 2.2 MySQL数据库... 5 2.3 MVC架…

区块链论文总结速读--CCF A会议 USENIX Security 2024 共7篇 附pdf下载

Conference&#xff1a;33rd USENIX Security Symposium CCF level&#xff1a;CCF A Categories&#xff1a;网络与信息安全 Year&#xff1a;2024 Num&#xff1a;7 1 Title: Practical Security Analysis of Zero-Knowledge Proof Circuits 零知识证明电路的实用安全…

对AI 感兴趣的小伙伴

如图&#xff0c;欢迎来玩儿&#xff01; 欢迎来玩儿

备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析(持续)

多做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一&#xff0c;通过做真题&#xff0c;可以帮助孩子找到真实竞赛的感觉&#xff0c;而且更加贴近比赛的内容&#xff0c;可以通过真题查漏补缺&#xff0c;更有针对性的补齐知识的短板。 今天我们继续…

嵌入式学习——3——UDP TFTP简易文件传输

tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&#xff09; mail&#xff1a;已经不再支持 TFTP通信…

ping 探测网段哪些地址被用

#!/bin/bash# 遍历192.168.3.1到192.168.3.254 for i in {1..254} doip"192.168.3.$i"# 对每个IP地址进行三次ping操作if ping -c 3 -W 1 $ip > /dev/null 2>&1thenecho "$ip: yes"fi done$ sh test.sh 192.168.3.1: yes 192.168.3.95: yes 192.…