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

 

个人主页:星纭-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.mzph.cn/diannao/15080.shtml

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

相关文章

webman使用summernote富文本编辑器

前言 Summernote富文本编辑器功能强大&#xff0c;可以直接从word直接复制内容过来而不破坏原有的文档格式&#xff0c;非常适合做商品详情等内容的编辑工具。本文将展示如何在php高性能框架webman中使用summernote编辑器。 下载 去Bootstrap 中文网、Summernote、jQuery官网…

【设计模式】JAVA Design Patterns——Converter(转换器模式)

&#x1f50d;目的 转换器模式的目的是提供相应类型之间双向转换的通用方法&#xff0c;允许进行干净的实现&#xff0c;而类型之间无需相互了解。此外&#xff0c;Converter模式引入了双向集合映射&#xff0c;从而将样板代码减少到最少 &#x1f50d;解释 真实世界例子 在真实…

低代码开发:拖拽式可视化构建工业物联网系统

什么是低代码&#xff1f; 低代码(Low Code)是一种可视化的软件开发方法&#xff0c;通过最少的手动编码可以更快地交付应用程序。低代码平台的图形用户界面和拖放功能可自动执行开发过程的各个方面&#xff0c;从而消除对传统计算机编程方法的依赖。 什么是低代码平台&#…

Pandas 创建层次化索引

1.创建多层次索引 1.1 隐式构造 最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组 # 导入pandasimport numpy as npimport pandas as pd​data np.random.randint(0,100,size(6,6))​# 行索引index [ ["1班","1班","1班&qu…

【全网最全】2024电工杯数学建模B题53页成品论文+完整matlab代码+完整python代码+数据预处理+可视化结果等(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024电工杯数学建模B题53页成品论文完整matlab、py代码19建模过程代码数据等&#xff08;后续会更新&#xff09;「首先来看看目前已有的资…

微软新功能Recall引发隐私担忧,英国数据监管机构展开调查

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

[Spring Cloud] (9)XSS拦截器

文章目录 简述本文涉及代码已开源Fir Cloud 完整项目防XSS攻击必要性&#xff1a;作用&#xff1a; 整体效果后端增加拦截器开关配置pom中增加jsoup依赖添加JSON处理工具类添加xss拦截工具类防XSS-请求拦截器 前端 简述 本文涉及代码已开源 本文网关gateway&#xff0c;微服务…

Visual Studio Code插件

文章目录 工具类AIChinese (Simplified) (简体中文)cmake集Code RunnerGitLens — Git superchargedPath IntellisenseTodo TreeBookmarks &#xff08;书签&#xff09;markdownclangd 美化类Output Colorizer &#xff08;输出窗口彩色&#xff09;Doxygen Documentation Gen…

安装harbor出现问题: Running 1/1 ✘ Network harbor_harbor Error

安装harbor出现问题&#xff1a; [] Running 1/1 ✘ Network harbor_harbor Error 0.2s failed to create network harbor_harbor: Error response from daemon: Fa…

K8s 搭建 FileBeat+ELK 分布式日志收集系统 以及 KQL 语法介绍

一、K8s FileBeat ELK 介绍 ELK&#xff0c;即Elasticsearch、Logstash和Kibana三个开源软件的组合&#xff0c;是由Elastic公司提供的一套完整的日志管理解决方案。Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎&#xff0c;它允许你快速地、近乎实时地存储、搜索…

力扣654. 最大二叉树

Problem: 654. 最大二叉树 文章目录 题目描述思路复杂度Code 题目描述 思路 对于构造二叉树这类问题一般都是利用先、中、后序遍历&#xff0c;再将原始问题分解得出结果 1.定义递归函数build&#xff0c;每次将一个数组中的最大值作为当前子树的根节点构造二叉树&#xff1b;…

牛客NC391 快乐数【simple 模拟法 Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/293b9ddd48444fa493dd17da0feb192d 思路 直接模拟即可Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值…

Linux-应用编程学习笔记(二、文件I/O、标准I/O)

一、文件I/O基础 文件 I/O 指的是对文件的输入/输出操作&#xff0c;就是对文件的读写操作。Linux 下一切皆文件。 1.1 文件描述符 在 open函数执行成功的情况下&#xff0c; 会返回一个非负整数&#xff0c; 该返回值就是一个文件描述符&#xff08;file descriptor&#x…

解禁谷歌等浏览器禁止网站使用麦克等媒体设备

1、浏览器地址栏输入chrome://flags/ 微软的chromium内核的edge浏览器&#xff0c;既可以输入&#xff1a;chrome://flags/ &#xff0c;也可以输入edge://flags/ 2、打开后&#xff0c;界面如下 3、输入搜索&#xff0c;unsafe&#xff0c;并启用、输入需要启用的网址

对AI 感兴趣的小伙伴

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

Python异常处理:打造你的代码防弹衣!

Hi&#xff0c;我是阿佑&#xff0c;上文咱们讲到——揭秘Python的魔法&#xff1a;装饰器的超能力大揭秘 ‍♂️✨&#xff0c;阿佑将带领大家通过精准捕获异常、使用with语句和上下文管理器、以及异常链等高级技巧来增强代码的健壮性。就像为代码穿上防弹衣&#xff0c;保护它…

生活小区火灾预警新篇章:泵吸式可燃气体报警器的检定与运用

在现代化的生活小区中&#xff0c;燃气设备广泛应用于居民的日常生活之中&#xff0c;但同时也带来了潜在的火灾风险。 可燃气体报警器作为一种安全监测设备&#xff0c;能够及时检测到燃气泄漏等安全隐患&#xff0c;并在达到预设的阈值时发出警报&#xff0c;提醒居民采取相…

SpringBoot Redis 扩展高级功能

环境&#xff1a;SpringBoot2.7.16 Redis6.2.1 1. Redis消息发布订阅 Spring Data 为 Redis 提供了专用的消息传递集成&#xff0c;其功能和命名与 Spring Framework 中的 JMS 集成类似。Redis 消息传递大致可分为两个功能区域&#xff1a; 信息发布 信息订阅 这是一个通常…

北斗短报文终端 | 什么是北斗短报文功能?如何实现北斗短报文通信?

北斗短报文功能是指通过北斗卫星进行短报文通信的功能。这种功能允许用户在没有移动通信信号覆盖的偏远山区、海洋、沙漠等地带&#xff0c;通过北斗短报文终端发送和接收文本信息&#xff0c;进行基本的数据通信。 北斗短报文功能是指北斗卫星导航系统特有的双向报文通信功能。…

urllib_post请求_百度翻译

打开百度翻译&#xff0c;并打开控制台&#xff0c;输入spider&#xff0c;然后在网络中找到对应的接口&#xff0c;可以看出&#xff0c;该url是post请求 在此案例中找到的接口为sug&#xff0c;依据为&#xff1a; 可以看到&#xff0c;传递的数据为kw : XXX&#xff0c; 所…