Python中的内置类型是我们开发中最常见的,很多人都能熟练的使用它们。 然而有一些内置类型确实不那么常见的,或者说往往会被我们忽略,所以这次的主题就是带领大家重新认识这些“不同寻常”的内置类型。 (注意:本文基于python3,不会包含任何python2相关内容) frozenset 不可变集合(frozenset)与普通的set一样,只不过它的元素是不可变的,因此诸如`add`,`remove`,`update`等可以添加/删除/改变集合内元素的方法是不存在的,换句话说一旦frozenset建立后你将不再可能更改集合内的元素。其他的方法与set一致: “`python >>> froz 在Python编程语言中,内置类型是非常基础且重要的组成部分,它们为开发者提供了丰富的数据结构和操作。尽管大部分开发者对list、dict、str等常用类型非常熟悉,但有些不太常见的内置类型,如frozenset、range、bytearray和memoryview,却可能在日常开发中被忽视。下面将详细阐述这些“不同寻常”的内置类型。 1. **frozenset**: - frozenset是Python中的不可变集合类型,与普通的set类似,但其元素不能被添加、删除或更改。这意味着一旦创建了frozenset,就不能再修改它的内容。 - frozenset支持与set相同的数学运算,如并集(union, |)、交集(intersection, &), 差集(difference, -)以及对称差集(symmetric difference, ^)。 - 因为frozenset是不可变的,所以它可以作为字典的键或者集合的元素,这是set所做不到的。 2. **range**: - range并非简单的返回一个迭代器或可迭代对象,它实际上是一个类。当我们使用for循环遍历range对象时,我们实际上是调用了range的__iter__方法,使range对象自身成为可迭代对象。 - range对象可以用于生成一系列数字,通常用于循环控制。它在内存中占用资源较少,因为它仅保存起始、结束和步长,而不是实际存储所有数字。 - range不是列表,因此不能使用索引访问,但可以转换为列表,如:list(range(1, 10))。 3. **bytearray**: - bytearray是Python中用于处理可变的字节序列,它是bytes类型的变体。与bytes不同,bytearray对象的元素可以被修改。 - 由于bytes是不可变的,因此无法直接修改其内容,但可以通过bytearray来实现原地修改。 - 创建bytearray可以通过构造函数,如bytearray()、bytearray(len)、bytearray(iterable)和bytearray(bytes-like)。 - bytearray提供了一些额外的特性,如fromhex和hex方法,用于16进制字符串和字节之间的转换。 4. **memoryview**: - memoryview提供了一种高效的方式来访问和支持缓冲协议的内存对象,如bytes和bytearray。 - memoryview允许对内存中的数据进行零拷贝操作,提高性能,尤其是在处理大块数据时。 - 它可以表示多维数组,视图的维度通过ndim属性表示,元素数量通过len获取。当ndim为0时,整个视图被视为单个元素。 - memoryview的另一个优势是它可以直接修改底层数据,而无需先将其复制到新的数据结构中。 这些被忽略的Python内置类型虽然不常用,但在特定场景下具有独特的优势和用途,了解和掌握它们可以提升代码效率和灵活性。在处理不可变集合、循环控制、可变字节序列和高效内存访问时,它们都可能成为解决问题的关键工具。
- 粉丝: 8
- 资源: 929
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python实现HTML压缩功能
- 完结26章Java主流分布式解决方案多场景设计与实战
- ECSHOP模板堂最新2017仿E宠物模板 整合ECTouch微分销商城
- Pear Admin 是 一 款 开 箱 即 用 的 前 端 开 发 模 板,提供便捷快速的开发方式,延续 Admin 的设计规范
- 51单片机仿真摇号抽奖机源程序12864液晶显示仿真+程序
- 家庭用具检测21-YOLO(v5至v11)、COCO、Paligemma、TFRecord、VOC数据集合集.rar
- Intel-633246-eASIC-PB-006-N5X-Product-Brief .pdf
- Avue.js是基于现有的element-plus库进行的二次封装,简化一些繁琐的操作,核心理念为数据驱动视图,主要的组件库针对table表格和form表单场景,同时衍生出更多企业常用的组件,达到高复
- STM32F401,使用ST-link时候,不能识别,显示ST-LINK USB communication error
- 快速排序算法Python实现:详解分治法原理与高效排序步骤